External Steps
An external step is a step of the funnel that lives on a site you host: your own landing page, a WooCommerce product page, a quiz on your marketing site. TagadaPay mounts no plugin for it, creates no CDN route, and never rewrites its URL. It keeps its own address and appears on the canvas like any other block, so the flow reads end to end instead of stopping at your domain boundary. Two things to do:- Declare it — the block exists on the canvas, with its URL and, if you want, its named exits.
- Report it — every time a visitor reaches the page, converts on it, or does something you care about, tell TagadaPay so analytics and routing see it.
Reporting is enough to make the block appear. A step the funnel has never seen, reported with an
https:// URL, is turned into an add step.external command on its own — you do not have to declare it first. Three things decide whether you actually see it:- the report must carry a
url, and it must behttps://. Without one the event is still tracked, and the block is skipped withreported-step-needs-url— no address is ever invented; - the store’s canvas must be in
livemode. Inshadowthe command is journalled and the funnel is not written, so nothing is drawn yet; - the block arrives unconnected. Nothing knows which exit it should hang from, so wire it with a
connectcommand or from the canvas screen.
stepId again never adds a second block: the command id is derived from the store and the step, and replaying it returns the original reply.Declare the step
On the canvas, an external step is anadd command of kind step.external:
url must be an absolute https:// address. exits names up to ten outcomes of your page.
The step type also exists in the funnel config directly — see Funnel Pages for the whole list of types and what each one unlocks.
Report what happens
One endpoint does all of it.storeId you send.
The reply is small and has no envelope:
With the Node SDK
@tagadapay/node-sdk 3.18.0 and later ship two helpers on funnels.
declareSteps sends one declaration per step and does not stop on the first failure — read steps[] in the result to see which were accepted.
The tracking endpoint has no
exit field. reportStep sends event as eventType, and an exit as eventType: 'custom' with the exit name in customEventName. Passing exit therefore always sends a custom event, whatever event says — which is exactly what the custom-event curl below does by hand.curl
From a Next.js route handler
Report from your server, never from the browser with an API key in it. This handler takes the browser’s word for the page and nothing else, and keeps the key server-side.app/api/tagada/step/route.ts
fetch('/api/tagada/step', …).
From the browser
If you would rather not run a server at all, the CDN tracker does the same job with no key: it sends anonymous page events tied to a store and a step.When it does not work
Next
Funnel Canvas
The five commands, the exits, and the error catalogue.
External Page Tracker
The browser tracker in full.
