Use a Google Form or Typeform before the redirect
Show a Google Form, Typeform or Tally form when someone opens your link or scans your dynamic QR code, then continue to the destination. Limits and tests.

At the end of this guide your short link or dynamic QR code opens your existing Google Form, Typeform or Tally form in a modal, and the visitor still reaches the destination you configured — instead of stopping at "Your response has been recorded".
Use it when the form already exists and its answers must stay in that tool. When you need the leads in CodeQR (Responses, Customers, CRM, email notifications) or need the form to be mandatory, use a CodeQR Page instead: Add a lead form to a QR code or short link.
Availability
- Plan: Business and above (pricing).
- Where: link builder → Pre-redirection form → Use external form. Same in the QR code editor for dynamic QR codes.
Before you start
- The public URL of the form — the one you would share, not the editor URL:
- Google Forms: Send → link icon → copy (
https://docs.google.com/forms/d/e/…/viewform). Forms with a file upload question, or with "Limit to 1 response", require a Google sign-in and cannot be embedded — remove those settings or use a CodeQR Page. - Typeform: Share → the
https://form.typeform.com/to/…link. Typeform embeds are served over HTTPS only and, by default, a "redirect on completion" replaces the whole page, not only the frame. - Tally: the
https://tally.so/r/…link. - Know the limits before you promise anything to your team:
- CodeQR does not receive the answers. They stay in Google Forms, Typeform or Tally. Nothing appears in Responses, Customers, Events or your CRM, and no email is sent.
- The form cannot be mandatory. The visitor can always close the modal; the app says so under the field, and the API rejects
isFormMandatoryfor external forms withCodeQR page required for form submission. - CodeQR cannot tell that the form was submitted. After the visitor finishes, the tool's own thank-you screen shows inside the modal; the visitor closes the modal to continue to the destination.
- Some form tools do not display inside a frame at all (a blank box) — see Troubleshooting.
Steps
- Open Links → Add Link (or Edit an existing link) and fill in the Destination URL.
- Turn on Pre-redirection form.
- Select Use external form.
- Paste the form URL in the field. Ignore the Mandatory Forms? option — it applies to platform forms only.
- Click Create link (or Save link).

For a QR code: same section in the editor of a dynamic QR code.
What the visitor sees
The modal opens with your form in a frame, over a blurred preview of the destination. A close button sits in the corner. When the visitor closes it — after answering or without answering — CodeQR sends them through the same short link to the destination and remembers the choice for one hour in that browser.

Do the same via the API
curl -X POST https://api.codeqr.io/links \
-H "Authorization: Bearer codeqr_xxxxxxxxxxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com/catalog",
"domain": "go.example.com",
"key": "catalog-form",
"preRedirection": true,
"pageUrl": "https://docs.google.com/forms/d/e/1FAIpQLSf_prf_docs_example/viewform?embedded=true"
}'The response returns "preRedirection": true, "pageId": null, "pageUrl": "https://docs.google.com/…", "isFormMandatory": false. Sending "isFormMandatory": true without a pageId returns 400 CodeQR page required for form submission. To switch an existing link from a CodeQR page to an external form, PUT /links/{linkId} with "pageId": null and the new "pageUrl".
Verify it works
- Open the short link in a private window. The modal shows your form.
- Answer it. The tool's confirmation appears inside the frame.
- Close the modal. You land on the destination.
- Check the answers in Google Forms, Typeform or Tally — not in CodeQR.
curl -sI -A "Mozilla/5.0 (iPhone; CPU iPhone OS 17_5 like Mac OS X)" https://go.example.com/catalog-form | grep -iE "^HTTP|x-pathname" # HTTP/2 200 # x-pathname: /go.example.com/pre-redirection/catalog-form/link
Troubleshooting
The modal opens but the box is blank
The form provider refuses to be displayed inside another site (X-Frame-Options or a frame-ancestors policy). Open the browser console: the request returns 200 but the frame stays empty with a "Refused to display" message. Only the form's owner can change that setting; if it is not you, use a CodeQR Page.
The form asks the visitor to sign in to Google
The Google Form has a file-upload question, "Limit to 1 response", or "Collect email addresses" set to verified. Sign-in does not work inside a frame or inside the Instagram and Facebook in-app browsers. Turn those settings off, or move the form to a CodeQR Page.
The visitor answered and nothing happened
That is the flow: Google Forms shows its own "Your response has been recorded" and has no redirect option; Typeform's redirect, when configured, replaces the whole page. CodeQR is not told about the submission — the visitor closes the modal to continue. Say so in the form's confirmation message ("Close this window to continue to the download").
On iPhone the form reloads or fails to submit
Safari blocks third-party cookies inside frames, and Typeform's own community confirms embedded forms can reload or fail to submit on iOS for that reason. Since QR scans are mostly mobile, a CodeQR Page form (same origin, no third-party cookies) is the reliable option.
I want to make the external form mandatory
Not possible: the modal can be closed and CodeQR does not know whether the form was sent. Mandatory needs a CodeQR Page: Make the form required or let visitors skip it.
The response has no idea which QR code it came from
CodeQR passes nothing to the external form. Use the tool's own pre-fill or hidden-field feature in the URL you paste (for example a ?source=poster-a parameter that Tally or Typeform captures), one link per placement.