Tally Hidden Fields: CTAs with Query Params (for Purchase, Help, and Automated Delivery)
Want a custom CTA button (Purchase Photos, Need Help, Request a Missing Photo) to open an external form that already knows the runner’s context? With Tally hidden fields and simple URL query parameters, you can pass identifiers like eventId, bibNumber, selfieRequestId, and a ref link into a form—then automate payments and delivery using Zapier or webhooks.
TL;DR: Create a Tally form, add hidden fields named eventId, bibNumber, selfieRequestId, and ref. Point your CTA button to the form URL and append query params like ?eventId=123&bibNumber=456&ref=.... Then connect Tally to Zapier (no-code) or webhooks (more control) to route requests, collect payment, and deliver outcomes.
What are Tally hidden fields (and why they’re perfect for CTAs)
Tally hidden fields are invisible fields you add to a form so you can pass data via the form URL and store it with every submission.
According to Tally’s docs, you can add hidden fields by typing /hidden in the editor, name the fields (for example name and ref), then pass values through URL parameters like:
https://tally.so/r/FORM_ID?name=Marie&ref=email
See Tally’s official guide: Hidden fields. Two details matter for CTA workflows:
- Hidden field names are case-sensitive (the URL parameter must match exactly).
- The first parameter starts with
?and additional parameters use&.
Which query parameters to pass from your CTA button
The goal is to send the smallest set of values that lets your team (or your automation) identify the exact context without the user re-typing it. For event photography CTAs, the most useful parameters are:
You can also pass marketing attribution fields like utm_source, utm_medium, and utm_campaign if you want CTA analytics.
Step 1: Build a Tally form that accepts hidden fields
In your Tally form editor, insert hidden fields by typing /hidden and add one block per field.
Name each hidden field to match your CTA URL parameters exactly (remember: case-sensitive).
Tally’s guide covers this end-to-end: Hidden fields.
Recommended hidden field names for 9Pic AI-style CTAs:
eventIdbibNumber(optional)selfieRequestId(optional)ref(recommended)utm_source,utm_medium,utm_campaign(optional)
Then add the visible fields your user should fill out (for example: email, phone, “What do you need?”, package selection, etc.). Keep the form short—your CTA is a high-intent click and you don’t want to waste it.
Step 2: Pre-populate visible fields (email/name) from hidden fields
Sometimes you already know the respondent’s email (for example, if they’re logged in or you have it in your CRM). Tally lets you pre-populate many input fields using a hidden field as the “Default answer”. Official docs: Pre-populate form fields.
Tally notes two important limits: you can’t pre-fill payment blocks or file upload blocks, and hidden fields are case-sensitive.
Example: pre-fill an email input
- Add a regular email input field (e.g., “Your email”).
- Add a hidden field named
email. - On the email input, enable Default answer and choose the hidden field
email. - Pass
?email=runner@example.comin the CTA URL.
Step 3: Build your CTA URL (with query param examples)
Once your Tally form is published, take the form’s URL (from the Share tab) and append the parameters.
The first parameter uses ?, and each additional param uses &.
Purchase photos CTA
Use this when a user is looking at search results and wants to buy photos, request an invoice, or start checkout.
https://tally.so/r/FORM_ID?eventId=123&bibNumber=456&ref=BASE64_OR_URLENCODED_VALUE
Selfie search help CTA
Use this when your UI has selfie search flows and you want support to immediately see which request failed.
https://tally.so/r/FORM_ID?eventId=123&selfieRequestId=abc123&ref=BASE64_OR_URLENCODED_VALUE
General help / contact CTA
Even if you don’t have a BIB or selfie request ID, passing eventId and ref is still enough to speed up triage.
https://tally.so/r/FORM_ID?eventId=123&ref=BASE64_OR_URLENCODED_VALUE
Tip: If your CTA already includes a ref parameter (for example, the current page URL encoded for safety), Tally will store it as-is in the hidden field. Treat ref as “context”, not as a secret.
CTA use cases for event photography teams
Here are high-signal CTA patterns we’ve seen event teams set up when they want flexibility beyond a fixed checkout flow. Each one works well with a Tally form + hidden fields because the user experience is fast and the back-office context is complete.
1) Purchase photos / request payment link
Add a “Purchase photos” CTA next to search results. The form collects email, optional phone, and package preference.
Hidden fields capture eventId, bibNumber or selfieRequestId, and ref so your team can fulfill the order without back-and-forth.
If you use 9pic Checkout, you can align your form’s package questions with your photo-selling options.
2) Report a missing photo (or incorrect match)
A “Can’t find my photos?” CTA can collect a short description (time window, bib color, outfit) and optionally allow a screenshot upload. Hidden fields avoid the most painful part of support: asking the runner to explain where they were in the flow.
3) Connect with help (fast support triage)
Add a “Need help?” CTA in your gallery UI. Route submissions to Slack, email, or your help desk with the hidden fields attached. This is especially helpful when you have multiple events active and support needs to know which event the user is referring to.
4) B2B lead capture for organizers
Add a “Organizing an event?” CTA on race pages and landing pages (for example Marathons). Use hidden fields for campaign attribution and route leads into a CRM.
Automate the workflow with Zapier (payments, delivery, notifications)
Tally offers a Zapier integration that triggers on a new form submission and can connect to thousands of apps. Tally’s docs also note that the Zapier integration is available for free to all Tally users: Zapier integration.
Common automation patterns customers build with Zapier (or similar tools like Make, Integrately, and Pipedream):
- Payment link workflow: new “Purchase photos” submission → create a Stripe Payment Link / invoice in your billing tool → email the link to the runner → notify your ops channel.
- Delivery workflow: submission → create an order record in Airtable/Notion/CRM → assign owner → send an automated confirmation email → deliver a download link once fulfilled.
-
Support workflow: “Need help?” submission → create a help desk ticket (or a Slack message) including
eventIdandref→ SLA-based routing to the right team.
Note: Zapier’s free plan is limited to two-step Zaps (per Tally’s Zapier guide). If you need multi-step routing, you may need a paid plan or use webhooks + your own workflow runner.
When to use webhooks (vs Zapier/Make)
If you need full control, Tally can POST each submission to your endpoint as JSON via webhooks.
Tally’s webhook docs highlight a few operational details worth designing around: there’s a 10-second timeout to respond, retry behavior on failures, and an optional signing secret that adds a Tally-Signature header for verification.
Reference: Webhooks.
Choose webhooks when you want to:
- Start a custom payment flow (create your own checkout session logic, map packages, handle currency, and record fulfillment).
- Deliver outcomes automatically (send download links, unlock access, generate PDFs, or trigger internal jobs).
- Own reliability and security (verify signatures, log events, and build retry-safe processing).
Best practices: privacy, URL encoding, and naming conventions
-
Don’t put secrets in query params: URLs can be logged and shared. Prefer IDs (like
eventId) over personal data. -
Encode
refsafely: if you pass a full URL asref, URL-encode it (or base64-encode it) so it survives copy/paste and doesn’t break the query string. -
Keep hidden field names stable: changing
eventIdtoevent_idlater will break existing CTAs unless you update links everywhere. - Test end-to-end: click the CTA → submit the form → confirm hidden fields appear in Tally submissions → confirm your Zap/webhook receives the values you expect.
FAQ
Are Tally hidden fields free?
Yes—Tally’s docs state hidden fields are available for free to all Tally users. See: Hidden fields.
Do hidden field names have to match URL parameters exactly?
Yes. Tally notes hidden fields are case-sensitive, so the hidden field name and URL parameter must match exactly (for example eventId is different from eventid).
Can I pre-fill payment fields via URL parameters?
Tally’s pre-population docs say you can’t pre-fill payment blocks (or file upload blocks). You can still pass hidden fields for context and use automation to handle payment outside the form if needed. See: Pre-populate form fields.
Is Zapier supported for Tally submissions?
Yes. Tally documents a Zapier integration where the trigger is a new form submission and you can route data into other apps. See: Zapier integration.
Should I use Zapier or webhooks?
Use Zapier for quick no-code automation. Use webhooks when you need tighter control, signature verification, and custom processing. Tally’s webhook docs describe JSON POST payloads, a 10-second response window, optional signing secret, and retries: Webhooks.
Next steps
If you want to scale event photo sales and support, hidden fields are a simple way to make external forms feel “native”—because the form already knows the context. Pair this with 9pic BibTrack and 9pic FaceFind discovery flows, route form submissions to your stack, and keep your team focused on fulfillment instead of back-and-forth.