Phone number without "+CC"
Email templates use <a href="tel:..."> and the tel: URI rejects whitespace. Always store as +49<digits>, no spaces.
The high-frequency gotchas, consolidated. Each is documented in detail in the appropriate group’s article; this page is the quick index.
If something you set up isn’t behaving as expected, this is the first page to consult before diving into deeper debugging.
Phone number without "+CC"
Email templates use <a href="tel:..."> and the tel: URI rejects whitespace. Always store as +49<digits>, no spaces.
Website without "https://"
Templates render links as <a href="{{website}}">. A missing scheme breaks the link silently.
Standorte not linked to pools/calendars
Without the linkage, $studio.* variables in automations resolve to empty. Set the links in Settings → Standorte.
Pool view cached for 5 min after bootstrap
After the Ingress bootstrap POST, reload the page to see new columns immediately.
"Für Interessenten buchbar" not ticked
The single most common form-empty cause. Every resource slot defaults to internal-only. Tick it on each slot before expecting public forms to show times.
Recurring slot disappears after day-of-week edit
If you change a recurring slot’s pattern to exclude the slot’s first-occurrence weekday, the whole slot disappears. iCalendar RRULE behavior — same as Google Calendar.
Variable-length courses confuse the search engine
Don’t map two appointment types of different durations to the same resource. Duplicate the resource + appointment-type pair per duration variant instead.
Calendar created before the global-resource migration
Legacy calendars need a one-time migration before they accept global resources/appointment-types. Migration button in the calendar settings.
Typo in `{{...}}` variable path renders blank
No validation today. Hover the variable chip to verify the path resolves; send a real test trigger to confirm.
Set-state node targets a pool that lacks the state
Lead states are org-global now — one Set-state node works across pools. But if the state isn’t assigned to a lead’s pool, that lead renders uncategorized on the pool board. Assign the state to every pool the flow touches.
Custom Field path uses UUID, not name
customFieldData.<uuid> — always insert via the variable picker. Don’t type the UUID by hand.
Customer-source picker missing on a trigger
Variable picker shows generic paths instead of named fields. Pick the Lead Pool the trigger’s leads come from.
Edits to a flow don't affect queued runs
Each run snapshots the flow definition + lead/appointment data at trigger time. Late edits apply to future triggers only.
Same-domain From + To silently drops
SendGrid drops mail where the From address equals the To address. Internal-recipient mail must be sent from noreply@<domain>.
SPF record exists — don't create a second one
Only one SPF record per domain. Merge include:sendgrid.net into the existing one; never add a parallel record.
API key with too-broad scopes
Pick Restricted Access, then Mail Send (Full) + Sender Authentication (Read). Anything more is unnecessary blast radius.
Cloudflare Turnstile breaks forms on iOS
Hangs the form on iOS Safari. Disable Turnstile or switch CAPTCHA providers until the fix lands.
Form configured but no times shown
Same gotcha as Für Interessenten buchbar — framed from the form-builder side. Always check the resource slots first.
"Deleted" leads are recoverable
Soft-delete by default; operator can restore. There’s no hard-delete in the public UI. Don’t panic if a customer says “all our leads are gone”.
Run status shows Completed when only some steps failed
Today, a run shows Completed if its last step succeeded. To find partial failures, check the per-step failure metrics in the ops dashboard.
Each card links to the full article. If you’ve hit a gotcha that isn’t on this page, add it — operator memory beats operator instinct, but only when it’s written down.