FunnelKit ability reference
Reference for the GoBuildWP Pro 1.12.4 source. Installed schemas and policy remain authoritative.
This FunnelKit ability reference covers what an agent can read from FunnelKit Funnel Builder (funnels, their steps in order, which funnel replaces the store checkout, and optin and order conversions over a date range) and the change it can make to a single step: a new title or slug, or a switch between published and draft, which the change log can undo.
Read-only, write and destructive groups describe the source annotations. They do not establish a minimum safety profile, human approval or undo support. Those controls are separate: check the installed ability, the connected user and the active site policy before calling it. A read can still return sensitive data. These pages are not evidence that every operation passed an end-to-end runtime test.
What FunnelKit needs before these load
FunnelKit Funnel Builder must be active; the manifest row looks for the WFFN_Core class or the WFFN_VERSION constant, and the kit also needs WFFN_Funnel. There is no version floor. The kit's development notes record one check against Funnel Builder 3.16.0.5 on WordPress 7.1.2 with WooCommerce inactive (29 September 2026); other versions are not recorded as checked. Permission comes from FunnelKit's own access rule, WFFN_Role_Capability::user_access(): funnel read access to list and read, analytics read access for stats, and funnel write access plus edit_posts to change a step, with manage_options standing in when that class is missing. FunnelKit Automations is not used.
- FunnelKit editions
- free, pro
Where FunnelKit keeps a funnel
A funnel is a row in {prefix}bwf_funnels whose steps column is JSON, with its _settings and _last_updated_on meta in {prefix}bwf_funnelmeta. Each step is a post of its own type (wffn_landing, wffn_optin, wffn_oty, wfacp_checkout, wffn_ty and so on), and visitors move through published steps alone. The store-checkout funnel is whichever id the _bwf_global_funnel option names. FunnelKit creates the funnels table the next time wp-admin loads after activation, so until then the list is empty.
Tracking pixels are treated as the owner's secrets: funnelkit-get-funnel says which ones a funnel overrides (facebook, google_analytics, google_ads, pinterest, tiktok, snapchat) without returning their ids.
Conversion counts without customer rows
Stats come from {prefix}bwf_conversion_tracking, where FunnelKit logs optins as type 1 and orders as type 2. Just COUNT and SUM over value, bump_total and offer_total, grouped by step, leave the database; contact, UTM, referrer and journey columns are never selected. The table's timestamps are site-local, so from and to are compared in the site's timezone, and leaving from out means the 29 days before to. Funnel Builder lite keeps no page-view store, so there are no view counts and no conversion rates. A site where the table does not exist yet gets kit_funnelkit_no_stats.
What a step update touches, and what undo restores
The update mirrors FunnelKit's own save-state route (wp_update_post on the step, then the funnel's _last_updated_on) with two deliberate differences: a new title never rewrites the slug of a live page, and the wffn_state_toggle_step action is not fired, since its listeners expect a REST request lite does not have. The page is re-read afterwards and any field that did not take is reported, such as a slug WordPress suffixed. Drafting a live step makes visitors skip it. Undo puts back title, slug and status, not _last_updated_on or page content.
Example FunnelKit input: wppilot/funnelkit-get-funnel
This one operation declares the 1 top-level input parameters below in wppilot-pro/includes/kits/funnelkit/src/abilities/get-funnel.php; funnel_id is required. Other calls in this module take different arguments. Nested schemas and constraints are not expanded here; the complete live schema a connected client discovers is authoritative.
| Parameter | Type and meaning |
|---|---|
funnel_idrequired | integer |
Representative call sequence
This sequence describes the documented calls and checks to perform. It is not a recorded result from an installed WordPress site. Inspect returned errors and partial results, then verify the saved values and affected output before proceeding.
Pause a funnel's upsell for a week and compare orders before and after.
- 01
wppilot/funnelkit-list-funnelsReturns each funnel with its steps in order, giving the upsell step's page id and status. - 02
wppilot/funnelkit-funnel-statsReports optins, orders and revenue per step for the previous 30 days in site time. - 03
wppilot/funnelkit-update-stepSets the upsell step to draft, so visitors skip it, and confirms the status took. - 04
wppilot/rollback-changeA week later, republishes the step with its earlier title, slug and status.
Questions about FunnelKit
Why does funnelkit-funnel-stats show no conversion rate?
Funnel Builder lite does not record page views, so there is nothing to divide by. Orders, optins and revenue are reported as totals and per step.
Will renaming a step change its URL?
No. The slug changes when you pass slug explicitly, and the result tells you if WordPress had to add a suffix because the slug was taken.
Can the agent see who opted in or ordered?
No. The stats query returns counts and sums per step and never selects contact or tracking columns.
FunnelKit reads
| Ability | What it does |
|---|---|
wppilot/funnelkit-funnel-statsFunnelKit Funnel Stats | Conversions one FunnelKit funnel recorded between two calendar dates in the site's timezone (default: the last 30 days): optins, orders and order revenue (plus order-bump and upsell revenue), in total and per step. Aggregates only, read from FunnelKit's own conversion table; no names, emails, orders or UTM data. Funnel Builder lite does not record page views, so there are no view counts or conversion rates. |
wppilot/funnelkit-get-funnelGet FunnelKit Funnel | One FunnelKit funnel: title, description, categories, when it was last updated, whether it replaces the store checkout, its steps in order (page id, type, title, slug, status, URL, builder, and any order-bump or upsell-offer ids), and which tracking pixels it overrides (named, never their ids). No customer, order or contact data. |
wppilot/funnelkit-list-funnelsList FunnelKit Funnels | Lists FunnelKit funnels, newest first, each with its steps in order: type (landing = sales page, optin, optin_ty = optin confirmation, wc_checkout, wc_upsells, wc_thankyou), the step's page id (step_id), title, slug, status (publish or draft), public URL when published, and which builder lays the page out. is_store_checkout marks the funnel that replaces the WooCommerce checkout. No customer data. Filter by title with search; page with limit and offset. |
FunnelKit writes
| Ability | What it does |
|---|---|
wppilot/funnelkit-update-stepUpdate FunnelKit Step | Renames a FunnelKit step, changes its slug, or publishes or drafts it, as FunnelKit's own step editor does. The step must belong to the funnel named. A draft step is skipped by visitors moving through the funnel, so drafting a live step changes where they go. A new title does not change the slug unless slug is given. The result re-reads the page and says whether each field took (WordPress may suffix a slug already in use). Undo with wppilot/rollback-change, which restores title, slug and status only. Page content is not changed here; use the abilities for the step's builder. |
For the task-level view of FunnelKit, with worked requests and what to check afterwards, see FunnelKit integration page.