Three Umbraco jobs, three gists. None of them is a package: copy the file, change the constants, done.

Send a form anywhere as JSON

PostToUrlAsJson is an Umbraco Forms workflow that posts each entry to a URL as JSON, with an optional bearer token. Point it at a Power Automate or Zapier trigger and send the entry on to Dynamics 365, Salesforce or anything else.

  • Put the file anywhere in the project and dependency injection picks it up. Not recompiling? Add it to App_Code.
  • The payload carries the form’s name and ID, the record ID, IP, member key, a UTC timestamp, and each field by its alias.
  • It’s written against the Umbraco 7 Forms API. MichelCollard’s fork added fixes, merged in 2019.

Keep old URLs alive

Moving a site to Umbraco breaks every old link. This content finder runs on a 404, looks for a page whose legacy URL field matches the request, and redirects there.

  • It ignores case, slashes, .aspx and .htm, so /About-Us.aspx finds about-us.
  • It skips images and PDFs: “don’t waste db search on asset requests”.
  • It sends a 302 to start. Switch to a 301 “for permanent/SEO purposes when you’re more comfortable”, because browsers cache those.
  • It’s Umbraco 7 code, adapted from Warren Buckley’s 404 handler.

Umbraco also keeps its own redirects whenever a page is renamed or moved. To take them into SEOChecker, this query exports them: run it in SSMS, save the results as CSV, import the CSV. Replace 1075 with your root node ID first.

Lock down media on Umbraco Cloud

Public access protects pages, not the files in /media: anyone with the link gets the PDF. This controller serves media through /secure/ and checks the member before it hands the file over. It’s Giacomo De Liberali’s approach, reworked for Umbraco 9 on Umbraco Cloud.

  • A rewrite rule sends every /media request to /secure. I had trouble hijacking /media on Umbraco Cloud, “probably due to my own ignorance”, so I went round it.
  • Turn off Umbraco Cloud’s CDN cache. Otherwise, I think, Cloudflare handles media requests before your code sees them.
  • The role check is marked untested in the gist. Test it before you trust it.

Also in the drawer: a media folder browser macro for Umbraco 7, fine up to about 100 files.

© 2026 Ali Robertson · Accessibility · Melbourne, Australia

Thanks for exploring this site with a screen reader! On mobile: use the rotor or local context menu to navigate by headings and landmarks. On desktop: press ? to see all keyboard shortcuts.