Vizzybl LogoVizzybl LogoVizzybl

Automate with Workflows

Build visual workflows that chain audits, agents, and alerts — run them on demand or on a schedule.

Last updated

Automate with Workflows

Workflows let you turn a repeatable process — a weekly visibility check, a citation-gap review, an audit-then-alert chain — into a visual graph that runs on demand or on a schedule.

Note: Workflows is in private beta for Pro, Ultra, and Enterprise plans. If you don't see Workflows in the sidebar, contact support to request access.

Build a workflow

  1. Open Workflows from the sidebar, or use the Chat ⇄ Workflows toggle on Home
  2. Click New workflow
  3. Drag nodes from the palette onto the canvas and connect them
  4. Select a node to configure it in the inspector (Setup, Advanced, and Context tabs)
  5. Click Save to keep a draft, or Publish to make the graph runnable

Prompt-scoped nodes (Citation Patterns, Scrape AI engines) work on one monitored prompt. Pick which one in the node's Context tab — or leave it on Automatic to use the first prompt from a connected Monitored prompts node.

Citation Patterns reads the analysis Vizzybl saved after that prompt's last nightly run, and reports its date. The step takes seconds and costs nothing. If the prompt has been checked again since, the step says its newest answers are not in the analysis yet; if there is no analysis for the prompt yet, the step is skipped and says so. To have it worked out again, use Recalculate on the prompt's Citation Patterns tab.

Every workflow starts with exactly one trigger node. Connect nodes left to right — each node's output flows into the nodes it connects to.

Node types

The palette groups nodes into six categories:

CategoryWhat it doesExamples
TriggersStart the workflowManual run, Schedule, Visibility drop, New citation
Data & SourcesRead your Vizzybl data, or a connected toolVisibility stats, Citations, Monitored prompts, Latest audit, Search Console, GA4, WordPress posts, AI crawlers, Workfront projects
AgentsRun an AI agentGEO audit, Brand Intelligence, Content Authority, Draft a page, Brand Protection, llms.txt
RecipesReady-made composite reportsWeekly Pulse, Citation Gap, Engine Scorecard, Source Authority
Logic & ControlBranch, wait, ask for approval, or fan outCondition, Switch, Wait, Ask for approval, Repeat for each, Parallel, Merge
Actions & OutputsDeliver resultsChannel message, Email, Action Board card, Trello/Workfront, Publish to WordPress, Call a webhook, Dashboard notification

Agent nodes charge the same credits as running the action anywhere else in Vizzybl. A failed run never double-charges — retries reuse the original charge, and a step that fails after charging is refunded automatically. Steps that read or write a connected tool cost nothing. See What a run costs below for the estimate and for a limit you can put on one run.

If your workspace cannot be charged for a step — not enough credits, a monthly limit that is used up, or a step your plan does not include — the step fails once, before it does any work, and says what was needed. Nothing is charged for it.

Connected tools

Steps that use a tool you've connected in Settings → Connections all behave the same way: if the tool isn't connected, needs reconnecting, or isn't on your plan, the step is marked skipped with the reason and the rest of the workflow carries on. A workflow never fails because of something you fix in Settings.

ToolReadWritePlan
Search ConsoleTop queries, top pages—Pro
Google Analytics 4AI referral traffic, engagement overview—Ultra
WordPressList postsPublish a post, update a postUltra
CloudflareAI crawlers, crawled pages, crawl trend—Pro
WorkfrontCurrent projectsCreate a task, set a task's statusPro
Keyword researchAI search volume, AI top domains, AI share of voice—Ultra
Anything else—Call a webhookPro

WordPress. Publishing creates a draft unless you change Publish as. Publishing live, and updating a post, need an Ask for approval step directly before them, so nothing reaches your site until an owner or admin approves it — see Approvals and WordPress below. Content comes from the step's own setup, or from what the previous steps found (see What each step sends). If you've connected more than one site, choose which one in the step's Site setting — a workflow will never guess between your sites. Republishing after a retry can't create a duplicate post.

A step writes a post or a page (its Type setting). Categories, tags and the author are picked by name from the site itself; a page has no categories or tags. A page that Draft a page rewrote is updated where it already is: the step finds it by its exact address, and a draft already written to the site is updated in place, never created a second time.

Each connected site has two safety settings in Settings → Connections, which owners and admins can change:

  • Drafts only — nothing goes live. With this on, nothing Vizzybl writes to the site is published: a step asked to publish live saves a draft and says so, and an update to a post that is already live is not made.
  • New posts and pages a day. 10 unless you change it (1 to 100). Past it, a step that would create another is skipped and says so. The count starts again at midnight UTC.

Connecting and disconnecting a site is also for owners and admins.

Cloudflare. These steps read the AI-crawler data Vizzybl already collects for the AI Crawlers dashboard, so they cover a trailing 28 days and can be up to a day old — each step reports the exact window it used. AI-crawled pages needs the beacon or Logpush ingest; the Cloudflare API method doesn't report individual pages.

Keyword research. Three steps answer what people actually ask AI engines, which domains those engines quote, and how often a domain is mentioned across them. Pick a location from the list — the research API only recognises those, and an unsupported one would quietly return US figures. These are the only data steps that cost credits — 1 credit per step, because they call a paid research API. If the API has no data for your keywords, the step is marked skipped and the credit is refunded rather than spent. Give it keywords in the step's setup, or connect a Monitored prompts step and it will use those.

Call a webhook. Sends the run's data to any HTTPS endpoint — Zapier, Make, n8n, or your own service — so you can reach a tool Vizzybl has no step for. By default it posts everything the previous steps produced; set a body to send something specific. Private and internal addresses are refused. If the endpoint needs a key, put it in the URL: don't paste secrets into step settings, because they're stored with the workflow and visible to everyone in your workspace.

Connect nodes

A connection carries the whole output of the node it leaves, so most workflows need nothing more than a line between two nodes. Select a connection to open its inspector when you need more control.

Branches. A connection leaving a Condition node takes either the true or the else side — pick one in the inspector. Exactly one connection should be else, or the else path never runs.

A connection leaving an Ask for approval step is either Approved or Not approved — pick one in the inspector. A connection with neither set counts as Approved, never the other way round. Approved can lead to several steps; Not approved can lead nowhere, which simply stops that path.

A connection leaving a Switch node carries the value it matches — type weekly to follow the branch where the switched value is "weekly". Use default for the connection that should run when nothing else matches, including when the value is missing.

Important: on a Switch, a connection left blank is not the default — it only runs when the value is literally "true". Set a value, or use default.

Field mapping. By default a step reads whatever it needs from everything upstream. When two upstream nodes offer the same field, or a step needs a value from deeper in an output, open the connection's Mapping tab and point the field at an exact path, starting with the step's id — for example prompts.0.promptId. The editor shows the paths seen in the last run and tells you whether a path resolves.

Write a condition

A Condition node compares one value from an earlier step against a number, or against true/false:

sovDelta < -5
brandIsCited == false
gapDomains.length > 0

Which values can I use? Open the node's Context tab: it lists exactly what the steps connected to this one produce, and clicking one adds it to the condition. Those are the only names that work — a name from a step further back does not arrive here unless that step is connected, directly or through a Condition, Switch, Wait or Ask for approval.

Two steps producing the same name. Write which one you mean, using the step's id: citationGap-1a2b.brandDomain. The Context tab does this for you when it needs to.

Lists. gapDomains.length > 0 means "the list is not empty". .length only works on a list.

Combine comparisons with AND and OR, up to five:

sovDelta < -5 AND brandIsCited == false

AND is applied before OR, so a OR b AND c means "a, or both b and c". There are no brackets; if you need different grouping, use two Condition nodes in a row — which reads as AND — or two branches into a Merge, which reads as OR.

When a value isn't there yet. Some values are legitimately empty — share-of-voice change needs eight days of history before it means anything. A condition that cannot be answered takes the else path rather than failing the run, so a new workspace does not get a red run every week. A name that does not exist at all is a different thing: that fails the step, so a typo is loud rather than silent.

What reaches the next step. A Condition passes the values it received on to whatever follows it, so an alert after a condition can report what the earlier step found. That is what makes gapDomains.length > 0 → Create action card produce a card naming the domains, rather than a card with only its title. Ask for approval does the same, so a channel message on its Approved branch still reports what the steps before the approval found, and an email there shows the decision followed by those findings.

What each step sends

An action with no message of its own — a channel message, an Action Board card, a dashboard notification, a Trello card or a Workfront task — sends a report of the steps before it: a section per step, with the actual numbers, tables and links. Write your own text in its message and that is sent instead. On an email, your text is an introduction shown above the sections.

What each step contributes:

StepWhat a message after it shows
Manual runThe inputs the run was started with, when someone supplied any.
On visibility dropThe share-of-voice change that started the run: current and previous week, the change in points, and the date.
On new citationThe domain AI engines newly cited, the prompt it appeared for, and the date.
Visibility statsLatest share of voice, mentions, rank and sentiment, the change over the window in points, and a daily table.
CitationsCitation totals, the most-cited domains with their share and which are yours, and the most-cited pages.
Monitored promptsEach monitored prompt with its status, country, brand mentions, citations, competitors, sentiment, engines and when it was last scraped.
GEO audit dataThe latest GEO audit: AI Visibility Index and pillar scores, robots.txt and blocked AI bots, llms.txt, page speed and content stats.
WordPress postsPosts on the connected WordPress site: title (linked), status and when each was last modified, out of the site total.
AI search volumeMonthly AI search volume per keyword, how many of the requested keywords have data, and the total.
AI top domainsThe domains AI answers cite most for a keyword, with mentions, AI search volume and their top cited page.
AI share of voiceAI mentions, impressions and search volume for a domain, by AI platform, and its most-cited pages.
Workfront projectsCurrent Workfront projects by name and ID, out of the total.
AI crawlersAI crawler activity over the rollup window: total hits, training and search shares, each bot with hits, data and last seen, and a per-category breakdown.
AI-crawled pagesThe pages AI crawlers fetched most over the rollup window, with hits, data and the top bots per page.
AI crawl trendAI crawler hits by day, and the change between the recent and the earlier half of the window.
GA4 reportGA4 sessions and users from AI assistants, per assistant with engagement, bounce and conversions (or the engagement overview), for the real date range.
Search ConsoleSearch Console clicks, impressions, CTR and average position — totals and the top queries or pages — for the real date range.
AI-sourced pipelineHubSpot contacts or deals attributed to an AI assistant, with the assistant that sent each (and deal stage and amount); contact names and emails only in the owner’s own email.
Read a Notion pageThe Notion page’s content, as written.
Ad account insightsChatGPT Ads spend, impressions, clicks, CTR, CPC, CPM and click- and view-through conversions for the account, in its own currency, with a daily table.
Campaign insightsEach ChatGPT Ads campaign with spend, impressions, clicks, CTR, CPC, CPM and conversions, highest spend first.
Ad group insightsEach ChatGPT Ads ad group with the context hints it targets, spend, clicks, CTR and conversions.
Ad insightsEach ChatGPT Ads ad with spend, impressions, clicks, CTR, CPC, CPM and conversions.
Paid vs organicPaid vs organic conversations: hints matched and spend, then the wasting, working, gap and undefended conversations with share of voice, spend and clicks, and any unmatched hints.
Run GEO auditThat a GEO audit was started, with a link to follow it; the results arrive in the app, not in this step.
Scrape AI enginesEach engine’s answer to the prompt: whether your brand was mentioned and how often, citations, citations of your domain and the competitors named.
Brand IntelligenceThe brand-intelligence summary, prioritised insights with their recommendations, metric trends with their change, and anomalies.
Citation PatternsWhy AI engines cite the pages they cite for a prompt: the summary, your content gaps by severity with what to do, recommendations, the most-cited domains and how often each signal appears.
Content AuthorityA page’s citation-readiness score and each citation gap by severity, with the suggested fix and where on the page it applies.
Draft a pageThe drafted page as written. Outside the published post: whether it is a rewrite or a new page, what it was written from, related pages on your site, and how many items are marked for a person to check.
Brand ProtectionHow your content matches the topics buyers ask about against competitors’: overall scores, each topic gap by severity, and recommended actions.
llms.txtThe generated llms.txt with its quality score, pages crawled out of those found, and the pages it covers.
Ask an AIThe model’s reply as written — or, when a JSON shape is set, its structured fields and lists.
Weekly PulseThis week against last week: share of voice with its change in points, average rank (lower is better), sentiment, and days of data.
Citation GapThe domains AI answers cite that are not yours, with citation counts, and whether your own domain is cited at all.
Engine ScorecardEvery AI engine with its share of voice now and on average, the change in points over the window, mentions and days with data, led by the top engine and the biggest move.
Source AuthorityThe share of AI citations that point to your own domains, your domains and most-cited pages, and the most-cited pages overall.
Repeat for eachInside a repeat: which item this is ("Item 3 of 10") and the item itself.
Collect resultsWhat each pass of a repeat produced — a list of replies or a results table — and how many passes failed.
Ask for approvalThe approval decision — approved, rejected, expired, cancelled or skipped — and when it was asked for and decided. Never who decided.
Create a cardThe Trello card that was created (or the Workfront task, when Trello is not connected), with a link to it.
Call a webhookThe webhook call: method, host (never the URL, which may carry a token) and response status.
Create Workfront taskThe Workfront task that was created, with a link to it.
Update Workfront taskThe Workfront task whose status was changed, and its new status.
Publish to WordPressWhether the post was published or saved as a draft, with links to view and edit it.
Update a WordPress postWhich post was updated and its status, with links to view and edit it.
Create a HubSpot blog draftThe HubSpot blog draft that was created and its state. HubSpot never publishes from a workflow.
Publish a page to NotionThe Notion page that was created, with a link to it.

Schedule, Condition, Switch, Wait / delay, Send channel message, Send email, Action Board card and Notify dashboard add nothing of their own: they start a run, route or delay it, or deliver the message. Parallel and Merge show each step before them, as that step.

How each destination fits the report:

  • Email — a section for each step connected straight to it, with tables. After a Condition, Switch or Wait, which have no section of their own, it reports the steps before them — unless you wrote an introduction, which is then the whole email. After Ask for approval it shows the decision and, unless you wrote an introduction, what the steps before the approval found.
  • Channel message — the report as short lines (one per table row), with a link to the run.
  • Action Board card — the report as a list, with a link to the run. Each run files its own card.
  • Dashboard notification — one line, the headline finding, and it opens the run.
  • Trello and Workfront — the report as plain text.
  • WordPress — the findings only: text, figures, and tables as lists. Step names, links back to Vizzybl and internal notes never reach your site.
  • Call a webhook — the raw data as JSON, as before.

A long report is never cut silently: it says how much more there is and links to the run, where every result is kept. Personal details from a connected tool, such as HubSpot contact names and email addresses, appear only in an email to the workflow's owner.

Approvals and WordPress

Ask for approval pauses a run until a person decides. Put it in front of anything that shouldn't happen without someone saying yes — above all, publishing to your website.

Required before WordPress goes live. A Publish to WordPress step with Publish as set to publish, and every Update a WordPress post step, must come directly after an Ask for approval step, connected on its Approved branch, with no other connection into it. Drafts don't need one. The editor won't publish a workflow that breaks this rule, and a workflow published before approvals existed stops at that step, with nothing published, until you add the approval and publish it again. For example: Schedule → AI crawlers → Ask for approval → Publish to WordPress on Approved, and a Send channel message on Not approved.

Who decides. Workspace owners and admins. Members and viewers can open a request and see what it would do, but can't decide. A test or manual run asks the person who started it when they're an owner or admin, and every owner and admin otherwise; scheduled and event runs ask every owner and admin.

How they're asked. A notification in Vizzybl, an email, and a message in the workflow owner's connected chat channels, each with a Review and decide link. The decision is always made on the approval page in Vizzybl, signed in — there are no approve buttons in emails or chat. Emails follow each approver's contact preferences, and owners and admins can see on the request who was notified and how.

What the approver sees. The workflow, who or what started the run, your message to approvers (the step's Message to approvers setting), and the post exactly as it will be written: rendered, with its source, title, slug, excerpt, status, categories and tags. Images load only when the approver asks. For an update, the current post is shown next to the new version. Warnings point out content WordPress may show differently — shortcodes, tables, task lists and images hosted elsewhere. Below that is the report of the steps before the approval. Approvers approve or reject, with an optional note.

Reviewing a drafted page. A page written by Draft a page can contain marks the writer left for a person: [VERIFY: …] beside anything it could not confirm, and [EXPERT: …] where it needs something only you know. The approval page lists every one. While any remain, approving needs a tick: "I have checked the marked items, and they are fine to publish as they are." Rejecting needs no tick.

Editing before approving. An owner or admin can change the title and the text of what a WordPress step will publish before deciding. The page then shows the edited version, and that version is what is published. Anyone who had the earlier version open has to reload before they can decide, so nobody approves something they have not seen.

Exactly what was approved is published. The post is fixed when approval is requested, from what reached the approval step, and approving writes that version once. If the post is edited in WordPress after approval was requested, the update is not written over those edits — run the workflow again to ask for a fresh approval. If the workflow is deleted, or a scheduled or event-triggered workflow is turned off, before the post is written, nothing is published. Because the post is fixed at that point, the connection from the approval into WordPress can't carry a field mapping; put mappings on the connection into the approval instead.

Approved and Not approved. Not approved runs when someone rejects the request, when nobody decides in time, or when Vizzybl couldn't ask — for example, because the same step is still waiting on an approval from an earlier run. The step shows the reason.

How long it waits. 72 hours unless you change it, anything from 1 hour to 30 days. If nobody decides in time, the run takes Not approved and finishes — nothing is published. A waiting run holds its schedule: scheduled runs that fall due while it waits are skipped, not queued. So an approval added to a daily workflow starts at 12 hours, and the editor warns when the wait is about as long as the schedule.

While it waits. The run shows Waiting for approval, the step shows Awaiting approval, and Review approval in the editor opens the request. The Workflows page shows how many approvals are waiting. For owners and admins, Approvals also appears in the header of every page while something is waiting for them: one request opens directly, several open a short list. The approval page has a way back, and returns you to where you were once your decision is recorded. Cancel run closes the request, and nothing is published. Once decided, the request shows who decided and when, and links to the published post.

An approval's own result is the decision and when it was made — never who made it — so it can't leak into a webhook or a message. Ask for approval can't go inside a Repeat for each region.

Publishing from Create. Where it is switched on for your workspace, Publish to WordPress in Create asks in the same way before a page goes live or an existing post is changed: the request appears under Approvals, an owner or admin sees exactly what would be written, and approving writes it. Saving a new draft to WordPress needs no approval. An owner or admin publishing their own page approves it on the same page, and nobody else is notified.

When the page is already on your site, the panel shows Update the existing post. Leave it ticked to change that post, or untick it to make a new one. Status starts at what that post is now; choosing Draft for a post that is live takes it off the site, and the panel says so before you send it.

Draft a page

Draft a page writes a page for your site inside a workflow: a better version of a page you already have, or a new page on a topic you give it. It is the same writer as in Create and in Vizzy's drafts, at the same price: 10 credits for a rewrite and 15 credits for a new page.

Note: This step is being switched on one workspace at a time. If it is not in your palette, or a run says the step is not switched on for your workspace, it is not available to you yet.

  • Set Draft to A better version of an existing page and give the page's address, or to A new page and say what it is about, in 3 to 200 characters. The step never picks a page for you: with neither, the editor will not publish the workflow.
  • Instructions for the writer is optional — tone, audience, what to leave out.
  • The draft is saved in Create, like any other, with what it was written from and the related pages on your site.
  • Anything the writer could not confirm is marked [VERIFY: …], and places that need your own knowledge are marked [EXPERT: …]. Check them before the page is published.
  • A workspace's workflows can draft 5 pages a day. Past that the step is skipped and says so.
  • If the page to rewrite cannot be read, if Vizzybl knows too little about your brand to write from, or if your workspace cannot be charged, the step fails once and says why. Nothing is charged for a draft that was not made.

To put the draft on your site, follow it with Ask for approval and a WordPress step: Schedule → Draft a page → Ask for approval → Publish to WordPress on Approved. The approver sees the page, its marked items, and can edit it first.

What a run costs

The editor shows what a run could cost before it runs, and what it took afterwards.

  • On the run button: the most one run could take from your balance.
  • On each step that charges: its price, free, or not charged yet. Not charged yet means the step's use is recorded but nothing is taken from your balance for it at the moment; it is not counted in the run button's figure. A step inside Repeat for each shows its price for every item it can repeat for.
  • Cost, in the editor's top bar, opens the detail: the most one run could take, what would only be recorded, the most a scheduled workflow could take in a month (a daily workflow runs at most 31 times a month, a weekly one 5, a monthly one once), how many runs your balance covers, and any step your plan or a monthly limit would stop today. It opens by itself when you publish or switch on a scheduled workflow that charges.
  • After a run: the top bar and the Cost panel show what the run took beside the estimate.

Every figure is an upper bound, read from the same prices the steps are charged at. When a price changes, the editor shows the new one without anything being republished.

A spend limit for one run. In Cost you can set the most credits one run may take. Before a step that charges starts, Vizzybl adds what the run has already taken to what that step could take; if that would pass your limit, the step is skipped, with the reason, and the run finishes with a warning. A step that has started is never cut short, and steps that take nothing are not affected. Leave the field empty for no limit.

Time limits

Every step has a limit on how long it may run: up to a minute for a step that reads data or sends something, and up to about five minutes for a step that runs an AI agent. Wait, Ask for approval and Repeat for each keep their own time.

These limits are being switched on. Once they are:

  • A step that runs out of time fails once, with a message that says so. It is not tried again, and nothing is charged for it. Other failures, such as a busy service, are still retried as before.
  • A step asked for more than it takes on does as much as it takes on, and its report says so — for example "Limit reached: 50 of 80 pages were done; the rest were left out". The most one step takes on: 50 pages for llms.txt, 200 keywords for AI search volume, 8 engines for Scrape AI engines, and 25 queries for Brand Protection.
  • The answer from Ask an AI has a length limit, and the step says when an answer was cut short.

The editor already warns when a scheduled workflow's steps, each at its limit, could still be running when the workflow next falls due. A run that falls due while one is still going is skipped, not queued — repeat for fewer items, or run it less often.

Run a workflow

Use Run test in the editor to execute the graph exactly as it appears on the canvas — the draft is saved automatically first, so a test always runs what you see. Manual and scheduled runs use the last published version.

The run button shows the most the run could take from your balance, for example Run test (up to 15 credits). It is always an upper bound: steps that skip don't charge, only one side of a branch runs, and a GEO audit is billed when the audit itself runs. What a run costs below explains the figure.

To pass one-off values into a run, open the inputs control next to the run button and add key/value pairs. They arrive on the trigger node's output, so any downstream step can read them.

Watch it run. While a run is in flight the canvas shows it live: each node gets a status dot and a coloured border, and the top bar shows the current step, progress, and credits used so far. Cancel run stops it — steps already finished stay finished, and any credits held for a step that never completed are released. A run started by a schedule or an event lights up the canvas the same way.

Select any node and open its Output tab to see exactly what that step produced. Each run also appears in Runs with per-node status, duration, output, and the credits it used; Show on canvas pins an older run so you can inspect it against the graph, and Unpin run returns to following the latest.

If a node fails, open the run and use view error to see exactly which node failed and why. Nodes retry automatically on transient failures. A step shown as skipped completed without doing its work (for example, an email or chat step with nothing configured to send to, or an email step whose owner has unsubscribed, snoozed notifications, or turned off Transactional email) — the skip reason appears next to the step.

Version history

Publishing keeps a snapshot. Open Versions in the editor to see every published version with who published it and when, and what changed between it and the version before — nodes added or removed, configuration changed, connections changed.

  • Restore to draft loads an old version onto the canvas so you can review or edit it before publishing again. Your current draft is replaced; the published version keeps running until you publish.
  • History is append-only. Restoring never rewrites the past — republishing a restored version creates a new version that records what it was restored from.
  • A run in flight always finishes on the graph it started with, so publishing or restoring mid-run never changes what that run does.

The editor's top bar shows draft differs from v3 whenever the canvas has unpublished changes.

Duplicate a workflow

Use the ⋯ menu on any row in the workflow library to Duplicate or Delete.

A duplicate arrives as a disabled draft called "… (copy)" with no run history, and it never inherits a schedule — so copying a live scheduled workflow leaves the original firing and gives you a safe copy to edit.

Schedule a workflow

  1. Use a Schedule trigger node and set a frequency — daily, weekly (Mondays), or monthly (the 1st) — and a time of day (UTC)
  2. Publish the workflow
  3. Turn the workflow on with the toggle in the editor's top bar

The on/off toggle controls scheduled execution: off pauses the schedule without deleting anything, on resumes it. Edits you publish take effect from the next scheduled run.

Important: Schedule times are UTC. A workflow set to 09:00 runs at 09:00 UTC regardless of your local timezone.

Event triggers

Workflows can also start themselves when something changes — no schedule needed:

  • Visibility drop fires after the daily visibility snapshot when your week-over-week share of voice falls by more than the threshold you set (in points). Set the threshold to 0 to run on every daily snapshot. Downstream nodes can read sovDelta, currentSov, and previousSov from the trigger.
  • New citation fires when a domain appears for the first time in a monitored prompt's top citation domains. Add an optional domain filter (for example reddit.com) to watch one source. Downstream nodes can read domain and promptId from the trigger.

Publish the workflow and turn it on — event-triggered workflows fire at most once per event (a given day's snapshot, or a given new domain), so retries and re-checks never run them twice.

Repeat steps for each item in a list

Repeat for each runs the steps that follow it once per item — every page Search Console flagged, every domain the AI engines cited instead of you.

  1. Add Repeat for each after a step that produces a list
  2. Set List to repeat over to the path — for example gsc.rows
  3. Set Most items to process (up to 25)
  4. Build the steps that handle ONE item
  5. Close the region with Collect results

Steps inside read the current item as {{item}} — reach into it with {{item.page}}, and use {{index}} and {{total}} for position. Collect results then gives everything after it results (one entry per item, in order), count, and failed.

Three things to know:

  • Cost multiplies. A step costing 1 credit inside a 10-item region costs 10 credits a run, and the editor's Run test (up to N credits) already accounts for it. That is why the limit is a fixed number rather than something read from your data — the estimate has to be knowable before the run.
  • One entry per step in the run trail, not one per item. It shows how many iterations ran, how many failed, which failed first, and the total credits — so a 25-item region reads as clearly as a single step.
  • A failure stops the region and fails the run, so the remaining items don't run and their credits aren't spent. Set the repeat step's On error to Continue to work through the rest instead — then results keeps every position, so entry 3 is always item 3.
  • One step feeds Collect results. That keeps each entry in results equal to that step's output rather than changing shape when you add a branch.

Not supported yet: regions inside regions, a Wait or Ask for approval step inside a region, Draft a page inside a region, and Run GEO audit inside a region (its credits are charged later by the audit itself, which can't yet tell the iterations apart). Each is blocked at publish with an explanation.

Ask an AI mid-workflow

The Ask an AI step takes an instruction you write and runs it against the data earlier steps produced — summarise, classify, draft, extract, compare.

Reference an earlier step with double braces naming the step and the field:

Write three bullets a marketer can act on, from these Search Console pages:
{{gsc.rows}}

The name before the dot is the step's id, shown in its inspector. If a reference doesn't match anything, the step still runs and lists what it couldn't resolve in its output, so a typo costs you a re-run rather than a failed workflow.

Two settings are optional. Model trades speed for depth. JSON shape takes an example object and returns parsed data on json alongside the prose on text, which is what you want when a later step needs to branch on the answer.

Each run of the step costs 1 credit, and is refunded if the model returns nothing.

Data from earlier steps is treated strictly as input. Text scraped from other websites or generated by another AI can contain wording that looks like an instruction, and this step is built to ignore it.

Start from a template

You don't have to design a workflow from a blank canvas. The Workflows page opens with a gallery of ready-made templates — a weekly engine scorecard, a citation-gap review, an llms.txt drift monitor, a Search Console decay chain. Browse the same set publicly at vizzybl.ai/templates.

Click Deploy on any template and it is copied into your workspace as a draft, disabled, at version 0. Nothing runs until you publish it yourself.

Two things a template deliberately does not carry:

  • A schedule. The trigger is recalculated from the graph rather than copied, so a deployed template can never inherit someone else's schedule and start firing on its own.
  • Anyone's settings. Before a template is published, config that is specific to whoever built it — webhook URLs, WordPress site ids, target domains — is stripped out. The template page and the editor both tell you which fields you need to fill in.

Each template shows what it will cost before you deploy it, worked out from today's prices each time the card is shown. It is always an upper bound — branches you don't take and steps that skip are not charged. Once a template is on your canvas, the editor's Run test (up to N credits) shows what applies to your own workspace, which can be lower: a step that is not charged yet is in a template's figure and not in yours.

Share a workflow with your other workspaces

If you run several brands on one credit pool — an agency, or a group with multiple brand workspaces — you can build a workflow once and deploy it everywhere.

  1. Publish the workflow (drafts can't be shared — they're work in progress by definition)
  2. Open the Workflows list and click Share on its row
  3. It appears in the template gallery of every workspace on the same credit pool

Sharing runs the same scrub as a public template, so your URLs, site ids and keys stay in your workspace. Vizzybl tells you how many fields were removed, and whoever deploys it is asked to supply them.

Only the workspace that shared a template can remove it. Sharing a credit pool lets colleagues deploy your work, not edit or delete it.

Next steps