HubSpot
Turn every quiz taker into a HubSpot contact with their answers, recommended products, cart and quiz-attributed revenue. Each answer is a dropdown or checkbox property with your real answer options, so you can build segments, workflows and reports on what shoppers told you, without typing values by hand.
Available on: Starter plan and above · HubSpot plans: all, including free · Platforms: Shopify and WooCommerce (identical) · Related: Zapier · Webhooks
What syncs
| What | When | Where it appears in HubSpot |
|---|---|---|
| Contact (email, first and last name) | A shopper enters their email in a quiz | Created, or updated if the email already exists |
| Quiz answers | The shopper reaches the results page | One property per question, in a group named after the quiz |
| Recommended products | The shopper reaches the results page | Latest recommendations, top product and its link |
| Cart and checkout | The shopper adds recommendations to the cart, or starts checkout, from the results | SQ Last quiz cart products / value, SQ Last checkout started |
| Quiz-attributed orders and revenue | A linked order is paid | SQ Quiz-attributed orders, SQ Quiz-attributed revenue, last order details |
| Activity notes | Quiz completed, and quiz-attributed order | A note on the contact's timeline with the answers, recommendations or order |
| Newsletter consent (optional) | The shopper ticked the newsletter box | Subscribed to the email subscription type you choose |
| List membership (optional) | With the contact | Added to the static list you choose |
| Deals (optional, off by default) | A linked order is paid | A deal with line items, in the pipeline and stage you choose |
Each event syncs once per quiz attempt. Counts and revenue are always recalculated from your ShopperQuiz data, so they stay correct even if a sync is retried.
- An email. HubSpot contacts are matched by email. Turn on Collect email address in the quiz's welcome screen. Shoppers who don't give an email are not sent to HubSpot.
- Orders must be linked to the quiz. See how it works for Shopify and WooCommerce. Only paid orders count: Shopify orders when they are paid, WooCommerce orders in Processing, Completed or On hold.
Connect HubSpot
- In ShopperQuiz, go to Integrations → HubSpot → Set up HubSpot and click Connect HubSpot.
- Sign in to HubSpot if asked, and pick the HubSpot account to connect.
- Review the permissions and click Connect app. You return to ShopperQuiz with the HubSpot drawer open.
- Choose what syncs (all core data is on by default), and optionally a subscription type, a list and deals.
- Click Send test to see a sample in HubSpot (see Send a test).
ShopperQuiz immediately creates a ShopperQuiz property group in HubSpot. Each quiz's properties are created the first time someone takes that quiz, or when you send a test.
If you started the install from a HubSpot link instead of the Connect button, sign in to ShopperQuiz when you land on it. The connection is completed for your store automatically. Install links expire after 30 minutes; if yours did, click Connect HubSpot again.
Permissions ShopperQuiz asks for
| Permission | Used for |
|---|---|
| Contacts (read and write) | Creating and updating quiz takers, and adding notes to them |
| Contact property settings (read and write) | Creating the ShopperQuiz properties and keeping their options up to date |
| Lists (read and write) | Showing your lists, creating one, and adding quiz takers to it |
| Communication preferences (read and write) | Showing your subscription types and subscribing shoppers who opted in |
| Deals, deal property settings and line items | Optional deals for quiz-attributed orders, and showing your pipelines |
ShopperQuiz only writes quiz data. It never reads, changes or deletes your other HubSpot records.
Contact properties
Find them in HubSpot under Settings → Properties → Contact properties, filtered by group.
The ShopperQuiz group (every quiz)
| Property | Type | What it holds |
|---|---|---|
| SQ Store | Text | The store the shopper took a quiz on |
| SQ Newsletter opt-in | Checkbox | Yes if the shopper ever ticked the newsletter box in a quiz |
| SQ First quiz date | Date and time | When they first started a quiz |
| SQ Quiz completions | Number | How many quizzes they've completed |
| SQ Last quiz | Text | The most recent quiz they completed |
| SQ Last quiz completed | Date and time | When they last completed a quiz |
| SQ Last recommended products | Multi-line text | Products recommended in that quiz |
| SQ Last top recommendation | Text | The #1 recommended product |
| SQ Last top recommendation URL | Text | Link to that product |
| SQ Last quiz cart products, SQ Last quiz cart value | Text, Number | What they added to the cart from the quiz |
| SQ Last added to cart | Date and time | When they did |
| SQ Last checkout started | Date and time | When they last started checkout from a quiz |
| SQ Quiz-attributed orders | Number | Paid orders linked to quizzes |
| SQ Quiz-attributed revenue | Number | Total of those orders, in your store currency |
| SQ Last quiz order total, products, number, date | Number, Text, Text, Date and time | The most recent quiz-attributed order |
One group per quiz: ShopperQuiz: your quiz name
| Property | Type | What it holds |
|---|---|---|
| SQ Quiz: your question | Dropdown (single-select questions) or Multiple checkboxes (multiple-select questions) | The shopper's answer, using your real answer options |
| SQ Quiz: Recommended products | Multi-line text | Products recommended in their latest attempt at this quiz |
| SQ Quiz: Completed | Date and time | When they last completed this quiz |
Answers always reflect the shopper's latest attempt at that quiz. A question they skipped is left empty.
Editing a quiz is safe. Properties are tied to the question, not its position or wording. Rename a question and the property's label updates; add an answer and it appears as a new option; delete an answer and its option is hidden (contacts who chose it keep their value). A new question becomes a new property.
Activity notes
When Activity notes is on, the contact's timeline gets a note when they complete a quiz (every answer, plus the recommended products with links) and when they place a quiz-attributed order (order number, total and items). Notes are visible on every HubSpot plan.
Newsletter consent
The welcome screen's newsletter checkbox is the shopper's consent to marketing, and it's shared by all your email tools.
- Choose an email subscription type in the drawer, for example Marketing Information. Shoppers who tick the box are subscribed to it, recorded with the legal basis Consent with notice and a note saying which quiz and store they opted in on.
- Shoppers who don't tick it are never subscribed. ShopperQuiz never unsubscribes anyone.
- If a contact previously unsubscribed in HubSpot, HubSpot keeps them unsubscribed, which is correct. The delivery shows a note saying so.
- Leave the setting on Don't subscribe anyone to only record the SQ Newsletter opt-in property and handle subscriptions with your own workflows.
HubSpot doesn't let apps set a contact's marketing contact status. To make quiz opt-ins marketing contacts automatically, create a contact-based workflow: Enrollment trigger: SQ Newsletter opt-in is Yes → Action: Set marketing contact status → Set as marketing. (Workflows need a HubSpot plan that includes them.) You can also set it in bulk from a filtered contacts view.
Add quiz takers to a list
Pick a static list in the drawer, or click New list to create one (for example ShopperQuiz quiz takers). Then choose who's added: All quiz takers or Newsletter opt-ins only.
For segments that update themselves, create an active list in HubSpot instead, filtered on ShopperQuiz properties. See the examples below.
Deals for quiz orders
Off by default. Turn on Deals for quiz orders to create a deal for each quiz-attributed order:
- Named Quiz order #1042 · Hair Discovery Quiz, with the order total as the amount, in the pipeline and stage you pick (default: your default pipeline's Closed won stage).
- Associated with the contact, with a line item for each product, plus SQ Quiz, SQ Order number and SQ Order key properties.
- Never duplicated: retries reuse the same deal.
If you already sync your store's orders into HubSpot (HubSpot's Shopify Data Sync, a WooCommerce sync app, or another integration that creates deals or orders), leave this off. Those orders are already in HubSpot, and quiz revenue is still on the contact as SQ Quiz-attributed revenue. ShopperQuiz never creates HubSpot Orders, only optional deals.
The deal amount is in your store's currency. If your HubSpot account uses a different currency, keep that in mind in revenue reports.
Using quiz data in HubSpot
Segments (active lists)
| Segment | Filters |
|---|---|
| Everyone who took a quiz | SQ Quiz completions is greater than 0 |
| Curly-hair shoppers | SQ Hair Discovery Quiz: What's your hair type? is any of Curly |
| Opted in, no purchase yet | SQ Newsletter opt-in is Yes AND SQ Quiz-attributed orders is 0 |
| Quiz cart abandoners | SQ Last added to cart is known AND SQ Last quiz order date is unknown |
| Quiz buyers | SQ Quiz-attributed revenue is greater than 0 |
Workflows
- Welcome series by result: enrollment trigger SQ Last quiz completed is known. Branch on an answer property, then send a different email per branch.
- Recommendation email: in a marketing email, insert personalization tokens for SQ Last top recommendation and SQ Last top recommendation URL.
- Cart follow-up: enroll when SQ Last added to cart is known, delay 1 day, then continue only if SQ Last quiz order date is unknown.
- Lead scoring: add points for SQ Quiz completions and SQ Quiz-attributed revenue.
- Re-enroll on retakes: turn on re-enrollment for SQ Last quiz completed, so a retake starts the workflow again.
Reports
Build a custom report on contacts using SQ Quiz-attributed revenue, SQ Last quiz or any answer property, for example revenue by hair type.
Sync past quiz takers
The drawer's Past quiz takers → Sync past quiz takers sends shoppers who completed a quiz with an email in the last 90 days, from before you connected. It sends the latest attempt per shopper and quiz, up to 5,000 in total.
- Properties and list membership only. No notes or deals are created for history.
- Only shoppers who ticked the newsletter box are subscribed.
- It runs in the background at a steady pace (about 40 per minute) to stay within HubSpot's limits. Progress shows in Recent deliveries.
- You can run it again an hour later. Running it twice is harmless: contacts are updated, not duplicated.
Manage HubSpot in ShopperQuiz
Open Integrations → HubSpot → Manage:
- Status: when the last sync succeeded, or the latest error.
- Connection: the connected HubSpot account and its ID, who connected it, and Open HubSpot.
- What syncs: switch answers, recommendations, cart and revenue, notes and deals on or off.
- Newsletter consent, Add to a list, and the deal pipeline and stage.
- How it appears in HubSpot: the exact properties ShopperQuiz creates, per quiz, with answer options.
- Send a test (see below).
- Past quiz takers.
- Recent deliveries: every sync with its status. Click a row for details, View contact / View deal in HubSpot, or Retry now.
- Sync per quiz: turn HubSpot off for individual quizzes, such as test quizzes. All quizzes are on by default.
- Disconnect HubSpot.
Send a test
Enter an email (yours by default) and pick an event: Quiz completed, Quiz-attributed order or New lead. ShopperQuiz writes sample data to that contact using your latest quiz's real questions (each with its first answer) and real products, and marks notes and deals as [Test]. Tests never change the contact's name and never subscribe it to anything. If a list is selected, the test contact is added to it. Click View contact to see the result.
Delivery statuses
| Status | Meaning |
|---|---|
| Delivered | HubSpot accepted everything |
| Queued / Sending | Waiting for the next sync cycle (a few seconds) |
| Retrying | HubSpot was busy or unavailable. ShopperQuiz retries after 1 minute, 5 minutes, 30 minutes, 2 hours, 6 hours and 12 hours. Rate-limit pauses don't count as retries |
| Failed | HubSpot rejected the data (see the error) or every retry failed. Use Retry now after fixing the cause |
| Stopped | No email yet, HubSpot was disconnected, or your plan no longer includes HubSpot |
Timing
Contacts and properties appear in HubSpot about 15 to 30 seconds after the shopper acts. The first sync for a new quiz takes a few seconds longer while its properties are created.
Plans and limits
- Starter plan or above. During a free trial everything works. If a subscription lapses, syncing pauses and nothing is sent; it resumes when the subscription is active again. Your settings are kept.
- Works on every HubSpot plan, including the free CRM.
- Each quiz question uses one HubSpot contact property, plus two per quiz. HubSpot limits custom properties per object (generous on every plan), so very large numbers of quizzes may reach it.
- One HubSpot account per ShopperQuiz store. Several stores can connect to the same HubSpot account; SQ Store shows which store each contact came from.
- Delivery history is kept for 30 days.
Disconnect and privacy
Disconnect HubSpot stops syncing and uninstalls ShopperQuiz from your HubSpot account. Contacts, properties, notes and deals already in HubSpot are kept; delete them in HubSpot if you want them gone. Uninstalling the app from HubSpot's side also stops syncing; the drawer then shows Reconnect needed.
HubSpot receives the shopper data your quiz collects (name, email, answers, recommendations, cart and order details). ShopperQuiz never shares your Shopify or WooCommerce credentials, and your HubSpot access is stored only on ShopperQuiz's servers. Use Sync per quiz to keep any quiz out of HubSpot.
Troubleshooting
Start with Integrations → HubSpot → Manage → Recent deliveries.
| Problem | What to check |
|---|---|
| No delivery row at all | Wait 30 seconds. The quiz must collect an email, and Sync per quiz must be on for it. The shopper must reach the results page for answers to sync |
| Delivery Stopped: "No email address yet" | The shopper didn't give an email. If they give one later in the same attempt, the contact syncs then |
| Reconnect needed | The app was uninstalled in HubSpot, or access was revoked. Click Reconnect HubSpot. Syncs from the last day retry automatically once reconnected; use Retry now for older failed rows |
| "Missing permission" | Click Reconnect HubSpot and approve all permissions |
| A contact wasn't subscribed | The shopper didn't tick the newsletter box, no subscription type is selected, or the contact had unsubscribed in HubSpot before. Click the delivery row to see which |
| "Could not add to the list" | The list was deleted or is an active list. Pick a static list, or create one with New list |
| Answer property is empty | The shopper skipped that question, or the latest attempt at that quiz didn't include it |
| An answer property shows old options | Options update the next time someone takes the quiz or you send a test. Removed answers stay as hidden options so existing values keep working |
| Deal not created | Deals for quiz orders is off, or the order isn't linked to the quiz or isn't paid yet |
| Revenue looks doubled in HubSpot reports | Another app also syncs your store's orders. Turn off Deals for quiz orders and use SQ Quiz-attributed revenue on contacts instead |
| "ShopperQuiz is pacing requests to HubSpot" | Normal during big syncs (such as past quiz takers). It continues automatically |
Still stuck? Email [email protected] with the time of the quiz run and, if you have it, the delivery ID from Recent deliveries.
Was this page helpful?