Insurance Event Spec
This page defines all standard events for insurance and insurtech businesses on Datafly Signal. Use these snake_case event IDs in your datafly.track() calls so your pipelines stay compatible with the pre-built insurance blueprint and the vendor mapping table below. The set covers the full lifecycle: discovery, quote journey, application and purchase, retention, and claims.
Insurance has no native event set in GA4 or Meta CAPI. Signal maps these canonical events onto each vendor’s
lead-gen and ecommerce events — e.g. quote_requested → generate_lead, policy_purchased → purchase. Where an
event also overlaps the GA4 ecommerce set (e.g. view_item, add_to_cart, purchase, search, sign_up,
login, generate_lead), reuse the GA4-recommended name as-is.
All events are sent via datafly.track(). Properties are passed as a flat object in the second argument.
Never put raw PII (email, phone, name, date of birth, address) in track() properties. Identifiers for
match-rate (email, phone) are collected separately via datafly.identify() and hashed server-side by the
blueprint before delivery.
Discovery Events
view_item_list
Fired when a user views a list of cover options, plans, or comparison results.
datafly.track('view_item_list', {
item_list_id: 'car-quotes',
item_list_name: 'Car Insurance — Comparison Results',
insurance_type: 'car',
items: [
{ item_id: 'COMP-PLUS', item_name: 'Comprehensive Plus', price: 480.00, index: 0, item_category: 'car' },
{ item_id: 'TPFT', item_name: 'Third Party Fire & Theft', price: 320.00, index: 1, item_category: 'car' }
]
})| Property | Type | Required | Description |
|---|---|---|---|
item_list_id | string | Optional | Machine-readable identifier for the list of cover options |
item_list_name | string | Optional | Human-readable name of the list being browsed |
insurance_type | string | Optional | Line of business (e.g. car, home, life, travel, pet, health) |
items | array | Optional | Array of cover options displayed (see Items Array Schema) |
select_item
Fired when a user clicks a specific cover option or plan within a list or comparison grid.
datafly.track('select_item', {
item_list_id: 'car-quotes',
item_list_name: 'Car Insurance — Comparison Results',
insurance_type: 'car',
items: [
{ item_id: 'COMP-PLUS', item_name: 'Comprehensive Plus', price: 480.00, index: 0, item_category: 'car' }
]
})| Property | Type | Required | Description |
|---|---|---|---|
item_list_id | string | Optional | Identifier of the list the option was selected from |
item_list_name | string | Optional | Name of the list the option was selected from |
insurance_type | string | Optional | Line of business |
items | array | Optional | Array containing the selected option (see Items Array Schema) |
search
Fired when a user submits a search (e.g. searching the knowledge base, looking up a provider, or filtering products).
datafly.track('search', {
search_term: 'multi car insurance',
insurance_type: 'car'
})| Property | Type | Required | Description |
|---|---|---|---|
search_term | string | Required | The search term entered by the user |
insurance_type | string | Optional | Line of business the search relates to |
view_search_results
Fired when search or comparison results are returned to the user.
datafly.track('view_search_results', {
search_term: 'multi car insurance',
results_count: 12,
insurance_type: 'car'
})| Property | Type | Required | Description |
|---|---|---|---|
search_term | string | Required | The search term the results relate to |
results_count | number | Optional | Number of results returned |
insurance_type | string | Optional | Line of business |
view_promotion
Fired when a promotional banner or offer (e.g. a discount or bundle) is visible to the user.
datafly.track('view_promotion', {
promotion_id: 'MULTICAR10',
promotion_name: 'Multi-Car 10% Off',
creative_name: 'multicar-hero-v2.jpg',
creative_slot: 'homepage-hero'
})| Property | Type | Required | Description |
|---|---|---|---|
promotion_id | string | Optional | Identifier for the promotion |
promotion_name | string | Optional | Human-readable name of the promotion |
creative_name | string | Optional | Name or URL of the creative asset shown |
creative_slot | string | Optional | Slot or placement where the promotion appeared |
select_promotion
Fired when a user clicks a promotional banner or offer.
datafly.track('select_promotion', {
promotion_id: 'MULTICAR10',
promotion_name: 'Multi-Car 10% Off',
creative_name: 'multicar-hero-v2.jpg',
creative_slot: 'homepage-hero'
})Accepts the same properties as view_promotion.
Quote Events
quote_started
Fired when a user begins a quote journey (opens the quote form or configurator).
datafly.track('quote_started', {
insurance_type: 'car',
coverage_level: 'comprehensive'
})| Property | Type | Required | Description |
|---|---|---|---|
insurance_type | string | Optional | Line of business (e.g. car, home, life, travel, pet, health) |
coverage_level | string | Optional | Level of cover being configured (e.g. comprehensive, tpft, essential) |
get_quote
Fired when a user requests a quote calculation mid-journey — for example clicking “Get my price” before viewing the full results. This is a high-intent engagement event referenced directly by the insurance blueprint.
datafly.track('get_quote', {
insurance_type: 'car',
quote_id: 'Q-10042',
coverage_level: 'comprehensive'
})| Property | Type | Required | Description |
|---|---|---|---|
insurance_type | string | Required | Line of business |
quote_id | string | Optional | Your quote reference |
coverage_level | string | Optional | Level of cover requested |
quote_requested
Fired when a user submits their details to request a quote. This is the primary lead event — ensure it fires reliably.
datafly.track('quote_requested', {
insurance_type: 'car',
quote_id: 'Q-10042',
coverage_level: 'comprehensive',
value: 480.00,
currency: 'GBP'
})| Property | Type | Required | Description |
|---|---|---|---|
insurance_type | string | Optional | Line of business |
quote_id | string | Optional | Your quote reference |
coverage_level | string | Optional | Level of cover requested |
value | number | Optional | Estimated annual premium |
currency | string | Optional | ISO 4217 currency code |
quote_received
Fired when a quote (or set of quotes) is returned to the user.
datafly.track('quote_received', {
insurance_type: 'car',
quote_id: 'Q-10042',
value: 480.00,
currency: 'GBP'
})Accepts the same properties as quote_requested.
generate_lead
Fired when a user becomes a qualified lead — for example requesting a callback, downloading a policy document, or completing a contact form. Reuses the GA4-recommended lead event so it maps cleanly to each ad platform’s lead conversion.
datafly.track('generate_lead', {
insurance_type: 'car',
lead_type: 'callback_request',
value: 480.00,
currency: 'GBP'
})| Property | Type | Required | Description |
|---|---|---|---|
insurance_type | string | Optional | Line of business |
lead_type | string | Optional | Type of lead (e.g. callback_request, brochure_download, quote_submitted) |
value | number | Optional | Estimated value of the lead (typically annual premium) |
currency | string | Optional | ISO 4217 currency code |
Policy Events
view_item
Fired when a user views a specific policy or cover option. Also accepted as policy_viewed.
datafly.track('view_item', {
insurance_type: 'car',
value: 480.00,
currency: 'GBP',
items: [
{ item_id: 'COMP-PLUS', item_name: 'Comprehensive Plus', item_category: 'car', price: 480.00, currency: 'GBP' }
]
})| Property | Type | Required | Description |
|---|---|---|---|
insurance_type | string | Optional | Line of business |
value | number | Optional | Annual premium of the policy viewed |
currency | string | Optional | ISO 4217 currency code |
items | array | Optional | The policy as an item (see Items Array Schema) |
add_to_cart
Fired when a user adds a policy or optional add-on (e.g. breakdown cover, legal protection) to their basket before checkout.
datafly.track('add_to_cart', {
insurance_type: 'car',
value: 525.00,
currency: 'GBP',
items: [
{ item_id: 'COMP-PLUS', item_name: 'Comprehensive Plus', item_category: 'car', price: 480.00, currency: 'GBP' },
{ item_id: 'ADDON-BREAKDOWN', item_name: 'Breakdown Cover', item_category: 'car_addon', price: 45.00, currency: 'GBP' }
]
})| Property | Type | Required | Description |
|---|---|---|---|
insurance_type | string | Optional | Line of business |
value | number | Optional | Combined annual premium of the items added |
currency | string | Optional | ISO 4217 currency code |
items | array | Optional | Policy and add-ons added (see Items Array Schema) |
begin_checkout
Fired when a user begins the policy application (checkout). Also accepted as application_started.
datafly.track('begin_checkout', {
insurance_type: 'car',
value: 480.00,
currency: 'GBP',
items: [
{ item_id: 'COMP-PLUS', item_name: 'Comprehensive Plus', item_category: 'car', price: 480.00, currency: 'GBP' }
]
})| Property | Type | Required | Description |
|---|---|---|---|
insurance_type | string | Optional | Line of business |
value | number | Optional | Total annual premium of the application |
currency | string | Optional | ISO 4217 currency code |
items | array | Optional | Policy and add-ons in the application (see Items Array Schema) |
add_payment_info
Fired when a user submits their payment details during the application. Also accepted as application_submitted.
datafly.track('add_payment_info', {
insurance_type: 'car',
value: 480.00,
currency: 'GBP',
payment_type: 'credit_card',
payment_frequency: 'annual',
items: [
{ item_id: 'COMP-PLUS', item_name: 'Comprehensive Plus', item_category: 'car', price: 480.00, currency: 'GBP' }
]
})| Property | Type | Required | Description |
|---|---|---|---|
insurance_type | string | Optional | Line of business |
value | number | Optional | Total annual premium |
currency | string | Optional | ISO 4217 currency code |
payment_type | string | Optional | Payment method (e.g. credit_card, direct_debit, paypal) |
payment_frequency | string | Optional | Billing frequency (e.g. annual, monthly) |
items | array | Optional | Policy and add-ons in the application (see Items Array Schema) |
purchase
Fired when a policy is successfully purchased. Also accepted as policy_purchased. This is the primary conversion event — ensure it fires reliably.
datafly.track('purchase', {
transaction_id: 'POL-55012',
value: 480.00,
currency: 'GBP',
insurance_type: 'car',
payment_frequency: 'annual',
policy_term_months: 12,
items: [
{ item_id: 'COMP-PLUS', item_name: 'Comprehensive Plus', item_category: 'car', price: 480.00, currency: 'GBP', quantity: 1 }
]
})| Property | Type | Required | Description |
|---|---|---|---|
transaction_id | string | Required | Policy number — used for deduplication |
value | number | Optional | Total annual premium |
currency | string | Optional | ISO 4217 currency code |
insurance_type | string | Optional | Line of business |
payment_frequency | string | Optional | Billing frequency (e.g. annual, monthly) |
policy_term_months | number | Optional | Length of the policy term in months |
items | array | Optional | The purchased policy and add-ons (see Items Array Schema) |
Always send transaction_id (the policy number) on purchase so platforms like Meta CAPI and GA4
deduplicate against any browser-side conversion.
policy_renewed
Fired when an existing policy is renewed.
datafly.track('policy_renewed', {
transaction_id: 'POL-55012',
value: 495.00,
currency: 'GBP',
insurance_type: 'car',
policy_term_months: 12,
items: [
{ item_id: 'COMP-PLUS', item_name: 'Comprehensive Plus', item_category: 'car', price: 495.00, currency: 'GBP', quantity: 1 }
]
})Accepts the same properties as purchase.
policy_cancelled
Fired when a policy is cancelled. Map server-side to a refund where the cancellation triggers a premium return.
datafly.track('policy_cancelled', {
transaction_id: 'POL-55012',
value: 120.00,
currency: 'GBP',
insurance_type: 'car',
cancellation_reason: 'switched_provider'
})| Property | Type | Required | Description |
|---|---|---|---|
transaction_id | string | Required | Policy number being cancelled |
value | number | Optional | Refunded premium amount, if any |
currency | string | Optional | ISO 4217 currency code |
insurance_type | string | Optional | Line of business |
cancellation_reason | string | Optional | Reason for cancellation (e.g. switched_provider, no_longer_needed) |
Claim Events
claim_started
Fired when a user begins a claim.
datafly.track('claim_started', {
insurance_type: 'car',
policy_id: 'POL-55012',
claim_type: 'accident'
})| Property | Type | Required | Description |
|---|---|---|---|
insurance_type | string | Optional | Line of business |
policy_id | string | Optional | Policy the claim relates to |
claim_type | string | Optional | Type of claim (e.g. accident, theft, windscreen) |
claim_submitted
Fired when a claim is submitted.
datafly.track('claim_submitted', {
insurance_type: 'car',
policy_id: 'POL-55012',
claim_id: 'CLM-88021',
claim_type: 'accident'
})| Property | Type | Required | Description |
|---|---|---|---|
insurance_type | string | Optional | Line of business |
policy_id | string | Optional | Policy the claim relates to |
claim_id | string | Optional | Your claim reference |
claim_type | string | Optional | Type of claim |
Account Events
sign_up
Fired when a user completes account registration (e.g. creating an online policy portal account).
datafly.track('sign_up', {
method: 'email'
})| Property | Type | Required | Description |
|---|---|---|---|
method | string | Optional | Registration method (e.g. email, google, apple) |
login
Fired when a user signs in to their account or policy portal.
datafly.track('login', {
method: 'email'
})| Property | Type | Required | Description |
|---|---|---|---|
method | string | Optional | Login method (e.g. email, google, apple) |
Items Array Schema
Several events accept an items array — each policy, plan, or add-on is represented as an item object using
GA4-style field names. Signal’s server-side blueprints automatically transform these to vendor-specific formats
(e.g., Meta’s contents[] with id/title fields).
| Property | Type | Description |
|---|---|---|
item_id | string | Your internal product/cover code (e.g. COMP-PLUS) |
item_name | string | Cover or plan display name |
item_category | string | Line of business or add-on category (e.g. car, car_addon) |
item_brand | string | Underwriter or brand name |
item_variant | string | Cover variant (e.g. Comprehensive, TPFT) |
price | number | Annual premium for this item |
quantity | number | Number of units (typically 1 for a policy) |
index | number | Position in list (0-indexed, relevant in list/comparison contexts) |
currency | string | ISO 4217 currency code |
coupon | string | Discount or promo code applied to this item |
discount | number | Monetary discount applied to this item |
item_list_id | string | Identifier of the list the item was shown in |
item_list_name | string | Name of the list the item was shown in |
Vendor Mapping
The table shows how Signal maps insurance events to each vendor’s native event name. The blueprint handles the payload transformation; you only ever send the canonical Signal event.
| Signal Event | GA4 | Meta CAPI | TikTok Events API |
|---|---|---|---|
view_item_list | view_item_list | ViewContent | ViewContent |
select_item | select_item | ViewContent | ClickButton |
search | search | Search | Search |
view_search_results | view_search_results | Search | Search |
view_promotion | view_promotion | (custom) | (custom) |
select_promotion | select_promotion | (custom) | (custom) |
quote_started | quote_started | (custom) | (custom) |
get_quote | get_quote | (custom) | (custom) |
quote_requested | generate_lead | Lead | SubmitForm |
quote_received | quote_received | (custom) | (custom) |
generate_lead | generate_lead | Lead | SubmitForm |
view_item | view_item | ViewContent | ViewContent |
add_to_cart | add_to_cart | AddToCart | AddToCart |
begin_checkout | begin_checkout | InitiateCheckout | InitiateCheckout |
add_payment_info | add_payment_info | AddPaymentInfo | AddPaymentInfo |
purchase | purchase | Purchase | CompletePayment |
policy_renewed | purchase | Purchase | CompletePayment |
policy_cancelled | refund | (custom) | (custom) |
claim_started | claim_started | (custom) | (custom) |
claim_submitted | claim_submitted | (custom) | (custom) |
sign_up | sign_up | CompleteRegistration | CompleteRegistration |
login | login | (custom) | (custom) |