Skip to content
Centriu
Centriu Flow

Automatic Lead Capture and Pipeline Handoff Automation: Fixing a Chain That Had Never Once Fired

A validation pass on Centriu Flow found its automation chain dead end to end — zero executions in the product's history — for four separate, named reasons: the widget intake saved a form submission without ever creating a contact record, while automation dispatch requires one; no intake path actually called the automation engine at all; the deployed worker mapped its own dispatch event to a slug that no longer existed; and the executor only accepted one argument shape while the dispatcher sent another. Two database triggers close the database-side half of that chain for every submission — widget, form, or landing page: one auto-creates or updates the matching Flow contact by account and email before anything else runs, and a second dispatches any active "form submitted" nurture sequence via a fire-and-forget call, but only after confirming one is actually active. A third trigger, fixed in the same release, turns a qualifying submission into a real company, contact, and deal inside Orbit's pipeline — deduplicated against an existing open deal, and wrapped so that no bug in the bridge can ever take down the lead capture itself.
Contact created before anything dispatches
A bug here can never lose the lead
Person working on a laptop with notifications on screen
Fixing a chain that had never once fired.

Why "the automation looks configured" is not the same as "the automation runs"

A marketing automation feature can look completely finished from the settings screen — a trigger selected, an email drafted, a wait period configured — and still never fire a single time, if any one link in the chain between "someone submits a form" and "the automation engine receives that event" is broken. The settings screen has no way to show that gap; the only way to find it is to trace what actually happens to a real submission, end to end, through every intake path.

How the underlying problem shows up before you fix it

A nurture automation is configured, shows as active, and simply never sends — with no error visible anywhere in the interface.

A form or widget captures a submission, but no corresponding contact record ever appears for it.

An automation-dispatch call references a resource identifier that no longer exists, and the failure is silently absorbed rather than surfaced.

A worker and the function it dispatches to disagree on the shape of the payload — one sends a field the other doesn't recognize — and nothing catches the mismatch until someone traces an individual event by hand.

A promising website lead never reaches the sales pipeline, because nothing connects the marketing side's capture to the CRM's own deal record.

Why a multi-step automation chain fails silently instead of loudly

A chain with several independent links — intake creates a record, a trigger notices it, a dispatcher calls an engine, a worker routes the event, an executor runs the step — has exactly as many places to quietly break as it has links, and each individual piece can look correct in isolation while the chain as a whole never completes. A slug that no longer exists, an argument name that changed on one side but not the other, a missing foreign key that a later step assumes exists — none of these throw an error a person would see on a settings page; they just mean nothing happens, forever, until someone traces one real event through every step by hand.

How Centriu Flow rebuilt the chain, and fail-closed the part with real consequences if it broke

The starting diagnosis, recorded directly in the fixing migration's own header, named four separate defects rather than one vague "automation doesn't work" ticket: the widget intake wrote a form submission row without ever populating its contact reference, while dispatch logic requires that reference to exist; no intake path called the automation engine at all — the deployed handler for one intake route referenced a function slug that had since been retired, and the resulting error was silently swallowed rather than surfaced; the deployed worker's own event-routing map pointed a dispatch event type at a second slug that likewise no longer existed; and the executor accepted one argument name while the dispatcher was sending a different one. All four were confirmed and fixed in the same release — this page describes the two fixes that live in the database as triggers, verifiable directly against the migration rather than against a deployed function's current state.

The first trigger runs BEFORE a form submission row is even inserted: if the incoming data includes a validly-shaped email and the submission doesn't already carry a contact reference, it looks for an existing Flow contact with that email under the same account and reuses it (updating a last-seen timestamp), or creates a new one from whatever name, phone, and company fields came in in the submission itself. This has to happen before insert specifically so that everything downstream — the dispatch trigger, the Orbit bridge — sees a populated contact reference on the very first read of the row, not on a delayed follow-up.

The second trigger runs AFTER that insert and dispatches any matching nurture sequence — but only after checking that the account actually has an ACTIVE automation configured for a "form submitted" trigger; if none exists, the trigger exits without spending a network call. When one does exist, the dispatch is a fire-and-forget HTTP call to the automation engine, authenticated with a service-role credential pulled from the platform's own secret vault rather than a value baked into the trigger itself — the same pattern the platform's scheduled jobs already use.

A third mechanism, the Flow-to-Orbit bridge, turns a qualifying submission into a real sales-pipeline record: it resolves the lead's name, email, phone and company (preferring the newly-created Flow contact, falling back to the submission's own raw fields), confirms the organization actually has an open pipeline stage and an active profile to own the deal — exiting quietly if either is missing, rather than creating a malformed record — and then checks for an existing Orbit contact with the same email already attached to an OPEN deal. If one exists, the bridge adds a timeline note to that deal instead of creating a duplicate; otherwise it creates a genuinely new company, contact and deal, sourced as "site," with a next-action reminder one day out.

Both triggers that touch the lead the instant it arrives carry the same explicit safety property, stated directly in their own exception-handling comments: the bridge that hands a lead to Orbit "can never take down lead capture itself." Any unexpected error inside either trigger is caught, logged as a warning for someone to investigate later, and the original submission row still gets saved — a bug in the automation or CRM handoff degrades to "this one lead didn't get its nurture email or its deal yet," never to "the form silently failed to submit."

What is actually built today

A BEFORE INSERT trigger that resolves or creates the matching Flow contact for every form, widget or landing-page submission, by account and email, before any downstream logic runs.

An AFTER INSERT trigger that dispatches an active "form submitted" nurture automation via a fire-and-forget call — but only after confirming one is actually active, so an account with no automation configured spends no network call.

A separate AFTER INSERT trigger that creates a real Orbit company, contact and deal from a qualifying lead — or, if a matching open deal already exists, logs a timeline note instead of creating a duplicate.

Two silent, safe exit conditions on the Orbit bridge: no open pipeline stage configured, or no active profile to own the deal — both skip cleanly rather than create a malformed record.

A fail-closed exception guarantee on both lead-arrival triggers: any unexpected error is caught and logged as a warning, and the original submission always still saves.

Agent-built nurture automations that state, by design, who enters, who doesn't, the message cap, and the exit condition — and agent-drafted email campaigns that always start as a draft requiring human approval before anything sends.

A lead who already has an open deal (illustrative scenario, not a real client)

Someone who submitted a contact-us form two weeks ago, and already has an open deal in Orbit from that first submission, fills out a second form on a different page of the same site — say, requesting a quote. The bridge finds the existing open deal by matching email, and rather than creating a second, competing deal for the same prospect, it adds a timeline note to the one that already exists, so the salesperson sees both signals on a single record instead of two disconnected leads.

What changes operationally

A website form submission now reliably becomes a real, queryable contact, an active nurture sequence (when one is configured) reliably fires instead of silently never running, and a qualifying lead reliably reaches the sales pipeline as a deal rather than depending on someone manually re-entering it. And because both triggers fail closed on the side of preserving the original submission, a future bug in either mechanism degrades to a missed nurture email or a missed deal creation — never to a lost lead.

When this is not the right fit

This page describes the two database-level triggers fixed in this release specifically — it does not claim to describe the worker and executor argument-shape fixes deployed in the same release, which live in edge functions rather than a stable migration file and were not re-verified for this page beyond the commit's own record of them. A team expecting every website submission to become an Orbit deal regardless of pipeline configuration will instead find a deliberate, silent skip when the organization has no open stage or no active owner configured — by design, to avoid creating a malformed record.

A configured-looking automation vs. one traced end to end

An automation that looks correctly configured on a settings screen has told you nothing about whether it has ever actually run — a chain with several independent links can look complete at every individual step while never once completing as a whole. Centriu's fix came from tracing one real submission through every step of that chain rather than trusting the configuration screen, naming each of the four points where it silently broke, and closing the two that live in the database with triggers that fail toward preserving the lead, never toward silently losing it.

Related systems

Main system: Centriu Flow. Complementary when relevant: Centriu Orbit, Centriu Axis.

What it does NOT do

  • Does not create a form-submission record without resolving a contact for it first — the contact-creation trigger runs BEFORE insert specifically so nothing downstream sees a missing reference.
  • Does not dispatch a nurture automation when the account has no ACTIVE "form submitted" automation configured — the trigger checks first and skips the network call entirely.
  • Does not create a second, duplicate Orbit deal for a lead who already has a matching OPEN deal — it logs a timeline note on the existing one instead.
  • Does not create an Orbit deal at all when the organization has no open pipeline stage or no active profile to own it — both conditions exit the bridge silently rather than produce a malformed record.
  • Does not let a bug in the contact-creation or Orbit-handoff triggers take down the original form submission — both are wrapped so an unexpected error is caught, logged, and the submission still saves.
  • Does not let an agent-created nurture automation skip stating who enters, who doesn't, the message cap, and the exit condition — and does not let an agent-drafted campaign send without a human approving it first.

Security and governance

The nurture-dispatch trigger authenticates to the automation engine using a service-role credential read from the platform's own secret vault at call time, never a value stored in the trigger's own source. Every created contact and deal is scoped to the submitting account's own organization. Any personal data captured through a form or widget remains subject to Brazil's LGPD (Law No. 13,709/2018). Full detail on access control lives at /governanca and /iso.

Pricing and contracting

Available by monthly subscription, with tiered plans. Values and terms come from the official pricing table at /precos (Centriu's central source — never restated here).

Frequently asked questions

Why did Flow's automation chain never fire before this fix?

Four separate, named defects: the widget intake never created a contact for the submission, no intake path actually called the automation engine, the worker mapped its dispatch event to a slug that no longer existed, and the executor expected a different argument name than the dispatcher sent.

How does a form submission get a contact now?

A BEFORE INSERT trigger resolves an existing Flow contact by account and email, or creates a new one from the submission's own fields, before anything downstream runs.

Does every form submission create a deal in Orbit?

No — only when the organization has an open pipeline stage and an active profile to own it; both missing conditions cause the bridge to exit silently rather than create a malformed record.

What happens if a lead who submitted before submits again?

If a matching Orbit contact already has an OPEN deal, the bridge adds a timeline note to that deal instead of creating a duplicate.

Can a bug in the automation or Orbit-handoff triggers break lead capture itself?

No — both triggers catch any unexpected error, log it as a warning, and the original form submission still saves regardless.

What does Centriu Flow cost?

It is sold by subscription with a published starting price — exact current values are on the central pricing page.

See how Centriu Flow captures leads and hands them to the pipeline automatically

Reach our commercial team directly, or leave your details below — we'll follow up with guidance for your case.

Sources

  1. Centriu Flow — public product page — Centriu, 2026-07-20 · link(primária)
  2. Centriu Flow — public factsheet (API, JSON) — Centriu, 2026-07-21 · link
  3. Law No. 13,709/2018 — Brazil’s General Data Protection Law (LGPD) — Presidência da República (Brazil), 2018-08-14 · link

Last material update on .

By · AI-assisted production, with human review