update validate to use fn.siteUrl as last resort