Third-Party Forms
Send configurator selections straight into third-party forms with no back-end code. Learn to listen for the Add to Cart event and pre-fill a Zapier Interfaces form.
Capture product configuration data from Mimeeq configurators and automatically pre-fill third-party forms like Zapier Interfaces. This no-code guide shows how to listen for browser events, pass configuration details via URL parameters and trigger automated workflows, with no back end required.
When a user clicks the Add to Cart (or Request a Quote) button inside a Mimeeq configurator, the embed fires a browser event called mimeeq-add-to-cart. This event carries a rich payload describing exactly what the user configured: selected options, quantities, pricing, product codes and more.
We use Zapier Interfaces as the example form tool because it has a generous free tier and connects natively to the rest of the Zapier automation ecosystem (email, Google Sheets, HubSpot, Salesforce, Slack and hundreds more). The same approach works with most other embeddable form tools (Typeform, Tally, HubSpot forms, etc.) as long as they support URL query-parameter pre-filling.
How it works
Part 1 — Understanding the event payload
When the mimeeq-add-to-cart event fires, event.detail contains an object with the following useful properties. You don't need to use all of them. Pick what makes sense for your workflow.
productCode
The base product identifier
"SOFA-3S"
variantCode
Full encoded variant string (encodes the entire configuration)
"SOFA-3S~...~"
price
Total calculated price
1299.00
currency
Currency code
"EUR"
quantity
Quantity selected
1
selectedOptionsList
Array of selected options with human-readable labels
See below
selectedOptions
Object map of option set codes to selected value codes
{ "fabric": "velvet-blue" }
shortCode
The configurator's short code
"IYCMLZ"
selectedOptionsList in detail
Each item in this array describes one chosen option:
This is the most human-readable way to summarise what was configured. It is ideal for passing into a form field or email body.
Accessing the payload in JavaScript
Part 2 — Setting up a Zapier Interfaces form
Create a free Zapier account
Go to zapier.com and sign up. The free plan is sufficient to follow this guide.
Create a new Interface
From the Zapier dashboard, click Interfaces in the left sidebar (or visit interfaces.zapier.com).
Click + New Interface.
Choose Form as the starting template.
Give your form a name, e.g. "Product Enquiry".
Add your form fields
Add whatever fields you need for your workflow. For a product enquiry use case, typical fields would be:
Name (short text)
Email (email)
Phone (short text, optional)
Message / Notes (long text, optional)
Configuration Summary: a hidden or read-only field that will receive the selected options automatically
Configuration URL: a hidden field that will receive the page URL including the full variant code
Note the field IDs
Every field in a Zapier Interfaces form has a unique ID (e.g. field-068b, field-fa17). You'll need these to pre-fill fields via query parameters. To find a field ID:
Click on a field in the form editor.
Look at the Field Settings panel. The ID is shown there, or it appears in the embed/share URL when you preview the form.
Make a note of the IDs for the fields you want to pre-fill (typically your configuration summary field and configuration URL field).
Part 3 — Adding the Mimeeq embed to your page
Add the Mimeeq configurator embed to your page using the standard embed snippet from your Mimeeq account. The short code is unique to your configurator:
Replace YOUR_SHORT_CODE with the short code shown in your Mimeeq admin panel for the relevant configurator.
Part 4 — Wiring it together with JavaScript
This JavaScript listens for the Mimeeq event and opens the pre-filled Zapier form. Adapt the field IDs (field-XXXX) to match the actual field IDs from your own form.
Show the form inline on the same page:
A common pattern is to hide the form in a modal that appears when Add to Cart is clicked. The Zapier web component reads query-params only once, when it is first inserted into the DOM. If the component is already on the page, you need to remove and re-insert it to pass new values.
Part 5 — Connecting the form to actions in Zapier
Once your form is collecting submissions, you can trigger any automated action using a Zap.
In Zapier, click + Create Zap.
Set the Trigger to Zapier Interfaces — New Form Submission and select your form.
Add one or more Actions, for example:
Gmail / Outlook: send a notification email to your sales team with the configuration details
Google Sheets: append a row to a leads spreadsheet
HubSpot / Salesforce / Pipedrive: create or update a CRM contact and deal
Slack: post a message to a channel
Webhooks by Zapier: POST the data to any custom endpoint
Each action step in Zapier lets you map the form field values (including your pre-filled configuration summary and URL) into the relevant fields of the destination app.
Troubleshooting
Fields are not being pre-filled
Confirm that "Allow query params" is enabled in the Zapier Interfaces form settings.
Confirm that
allow-query-params="true"is set on the element.Check that the field IDs in your query string exactly match the IDs shown in the form editor.
If re-using an already-rendered embed, make sure you are removing and re-inserting the element (the web component only reads
query-paramson first render).
The event is not firing
Open your browser console and add a temporary listener for
mimeeq-add-to-cartto confirm the event fires.Make sure the Mimeeq embed script has loaded before your listener is registered. Placing your script at the bottom of the page body or using
deferhelps.
The configuration summary is being cut off
URL query parameters have practical length limits (typically 2,000–8,000 characters depending on browser and server). If a configuration has many options, truncate the summary to a safe length (e.g. 3,000 characters). Rely on the configuration URL, which contains the full
variantCode, to reconstruct the exact configuration if needed.
The modal appears but the form is blank
This is usually the re-insertion issue described above. Remove the old element from the DOM before creating a new one.
Related articles
Was this helpful?