← Tidingwell
DocumentationPrivacyEULASupport

Tidingwell for Webflow: documentation

Published at https://greatwork.company/apps/tidingwell-for-webflow/docs. Questions: hello@greatwork.company.

Tidingwell sends your Webflow form submissions and paid orders to Meta, TikTok, Reddit and Pinterest from our server, through each platform's conversions API, with your own access tokens.

Pricing

$39/month or $390/year per site, with all four platforms and no limit on events. $149/month or $1,490/year covers up to 10 sites in one Webflow workspace. 14-day free trial per site, starting when you turn sending on. When the trial ends, sending stops; new conversions are held for 72 hours and go out if you pick a plan in that time. Plans renew until you cancel in Manage billing.

Set up (10 minutes)

  1. Install Tidingwell from the Webflow Apps marketplace and approve access for your site.
  2. Open it in the Designer (Apps panel). The Overview tab shows a checklist.
  3. Connect your platforms on the Platforms tab. For each one, paste the IDs and token below and press Connect.
  4. Send a test event to each platform and look for "Test from Tidingwell" in the platform's test tool.
  5. Check your events on the Events tab: each form sends a Lead unless you pick another event; paid orders send a Purchase.
  6. Review Privacy: the consent mode, your default country for phone numbers, and (optional) click-ID capture.
  7. Turn sending on (Overview). Your trial starts now.

Where to find each platform's details

PlatformWhat to pasteWhere
Meta (Facebook, Instagram)Dataset (pixel) ID, Conversions API access token, test event codeEvents Manager > your dataset > Settings > Conversions API > Generate access token. Test code: Events Manager > Test events
TikTokPixel code, Events API access token, test event codeTikTok Events Manager > your web pixel > Settings > Events API > Generate access token. Test code: Test events > Server events
RedditPixel ID (a2_... or t2_...), conversion access token, test IDReddit Ads > Events Manager > Conversions API > Generate access token (shown once). Test ID: Event testing
PinterestAd account ID, conversion access tokenPinterest Ads Manager > Conversions > Conversion access token > Generate new token. No test code: Pinterest validates test events without recording them

Tokens are write-only in Tidingwell: after you save one, only its first and last 4 characters are shown. Paste a new one to replace it.

What gets sent

Webflow eventTidingwell eventMetaTikTokRedditPinterest
Form submission (default)LeadLeadSubmitFormLEADlead
Form submission (pick per form)Sign-upCompleteRegistrationCompleteRegistrationSIGN_UPsignup
Form submission (pick per form)ContactContactContactLEADcontact
Form submission (pick per form)SubscribeSubscribeSubscribeSIGN_UPsubscribe
Paid order (Webflow Ecommerce)PurchasePurchaseCompletePaymentPURCHASEcheckout
  • Forms: Tidingwell finds the email, phone, name, city, state, ZIP and country fields by their names and types. Open "Fields and match quality" on a form to correct a guess or mark a field as not collected. Other answers (messages, checkboxes) are never sent or stored.
  • Orders: sent once, when the order is paid (pending orders wait for the change). Value is the order total by default (switch to the subtotal on the Events tab); product IDs are Webflow's SKU IDs by default (or your SKU codes, or product IDs: match your catalog). Refunds are noted in the log; the platforms keep the conversion.
  • Forms added later send a Lead unless you change the default on the Events tab.

Matching and hashing

Before anything is stored or sent, Tidingwell normalizes each customer detail the way that platform documents and hashes it with SHA-256. Examples: Meta wants phone numbers as digits with the country code (16505551212); TikTok and Reddit want E.164 with a plus (+16505551212); Reddit removes dots and +tags from the part of an email before the @. Phone numbers typed without a country code get your default country's code (Privacy tab); without a default country they are left out rather than sent wrong.

Match-quality hints on the Events tab are our estimate from which keys a form collects. Each platform shows its own score (Meta's Event Match Quality, for example) in its Events Manager after a few days of events.

Click-ID capture (optional)

Switch it on in the Privacy tab. Webflow asks you once to approve custom code for the site; after that Tidingwell registers a script of under 2,000 characters that Webflow serves inside your pages. Publish the site to make it live (and again after switching it off).

What it does, only when the visitor's consent allows:

  • Keeps the ad click IDs from the landing page address (fbclid, ttclid, rdt_cid, epik) in one first-party cookie, _twc, for 90 days.
  • On a form submit, adds a hidden field named tidingwell with those IDs, the platforms' browser cookies (_fbp, _fbc, _ttp, _rdt_uuid, _epik), the browser's user agent, the page address and a random event ID.

The tidingwell field shows up in Webflow's form submissions and notification emails as one line of text. It skips checkout and payment forms entirely. The Privacy tab shows the exact script.

Count each lead once (deduplication with your browser pixel)

Each form gets a data-tw-event-id attribute when it's submitted, and Tidingwell sends that same ID as the event ID. If your browser pixel also fires on the form, give it the same ID and each platform counts the lead once:

<script>
document.addEventListener("submit", function (e) {
  setTimeout(function () {
    var id = e.target.getAttribute("data-tw-event-id");
    if (!id) return;
    if (window.fbq) fbq("track", "Lead", {}, { eventID: id });
    if (window.ttq) ttq.track("SubmitForm", {}, { event_id: id });
    if (window.rdt) rdt("track", "Lead", { conversionId: id });
    if (window.pintrk) pintrk("track", "lead", { event_id: id });
  }, 0);
}, true);
</script>

Orders use the event ID wf_order_ plus the Webflow order ID. On your order confirmation page, a browser Purchase event with that ID is counted once with Tidingwell's.

Consent

Tidingwell decides for each conversion, before anything is hashed or stored:

  • A visitor who declined tracking (your banner said no, or the browser sends Global Privacy Control) is never sent.
  • EEA mode (default): visitors in the EEA, the UK and Switzerland are sent only with consent. Orders use the billing (or shipping) country; forms use a country field, or the browser's time zone when click-ID capture is on. When Tidingwell can't tell where a visitor is and there's no consent signal, it doesn't send (you can change that if your visitors are outside Europe).
  • Strict mode: only an explicit yes counts, everywhere. Orders aren't sent in this mode (checkout carries no consent signal), and forms need click-ID capture plus a banner.
  • "My site handles consent before forms load": use only if visitors can't reach your forms or checkout without answering your banner. A "no" is still honored.

Consent banners

Read without setup: Cookiebot (marketing category), OneTrust (targeting group C0004), Finsweet Consent Pro (marketing), and Webflow's own consent setting (wf.allowUserTracking / wf.denyUserTracking).

Any other banner: set window.TidingwellConsent to true or false from its callback, before the visitor submits a form. For example:

<script>
// CookieYes
document.addEventListener("cookieyes_consent_update", function (e) {
  window.TidingwellConsent = e.detail.accepted.indexOf("advertisement") > -1;
});
// Termly
window.addEventListener("termlyConsentUpdate", function (e) {
  window.TidingwellConsent = !!(e.detail && e.detail.advertising);
});
// Osano
if (window.Osano) Osano.cm.addEventListener("osano-cm-consent-saved", function (c) {
  window.TidingwellConsent = c.MARKETING === "ACCEPT";
});
</script>

Check your banner's own documentation for its event names; the line to add is always the same.

The delivery log (Activity tab)

One row per conversion (the form's name or the order number, never the customer's details), one line per platform: Sent, Will retry (with the next time), Failed (with the platform's reason), Held (plan) or Not sent (with the consent reason). Failed sends retry after 1, 5 and 30 minutes, then 2, 6, 24 and 48 hours, for up to 72 hours. Press Send again after fixing a token. The log keeps 30 days.

Test mode

Privacy tab > Test mode sends every event with your test codes (Meta, TikTok, Reddit) and with Pinterest's validate-only flag. Use it while you set up; turn it off before your campaigns rely on the conversions.

Troubleshooting

You seeWhat to do
"Meta refused the access token"Generate a new Conversions API token in Events Manager and paste it on the Platforms tab
"TikTok rejected the event ... (code 40002)"Check the pixel code (capital letters and digits) on the Platforms tab
Many "Not sent: the visitor is in the EEA ..." rowsYour banner isn't reaching Tidingwell: see Consent banners above
"Not sent: Tidingwell couldn't tell where the visitor is"Turn on click-ID capture, add a country field, or change the region setting on the Privacy tab
No events at allMake sure sending is on (Overview) and the site is published; Webflow sends webhooks for published sites
Orders missingThe site needs Webflow Ecommerce; only paid orders are sent

Removing Tidingwell

Settings > Remove Tidingwell deletes our webhooks and script from your site, revokes Webflow's access, and deletes your platform tokens, settings and log at once. Publish the site to take the script off live pages. Uninstalling the app in Webflow does the same within a day. Cancel your plan in Manage billing.

Made by Great Work LLC, 651 N Broad St Suite 206, Middletown, DE 19709. Not made or endorsed by Webflow, Meta, TikTok, Reddit or Pinterest.