====== CRM Attribution ======
{{ :crm_attribution.png?nolink&600 |}}
===== General Overview =====
This article will guide you on how to match the conversions from Google Analytics to your CRM data. As prerequisite you will need to have a common join key from both your GA and CRM data. A frequently used approach of bringing hashed email address into Google Analytics can be found in our article [[https://www.windsor.ai/how-to-connect-google-analytics-to-your-crm/|How to connect Google Analytics to your CRM system?]]. Of course if you already have a custom dimension in place with an identifier you can use this dimension for the join.
=== Sample query to get data from Salesforce ===
https://connectors.windsor.ai/salesforce?api_key=[your API key]&date_preset=last_7d&fields=contact_firstname,contact_lastname,contact_email,contact_phone
=== Sample query to get data from HubSpot ====
https://connectors.windsor.ai/hubspot?fields=contact_firstname,contact_lastname,contact_email,contact_company,contact_phone,contact_lifecyclestage&api_key=[your API key]
You can automate the streaming of the data from your connector URL to your Windsor.ai Cloud Database on your [[https://onboard.windsor.ai/|Windsor.ai configuration]]. Here is a sample screenshot \\
{{ :pushing_crm_data-prest.png?nolink&800 |}}
Once this is done the data can then be joined in [[https://charts.windsor.ai/w/sqllab?|SQL Lab]] with the data in the conversions table.
BEGIN;
TRUNCATE TABLE crm_conversions;
INSERT INTO crm_conversions (datasource, transaction_id, crm_type)
SELECT
'ds_hubspot' as datasource,
encode(sha256("contact_email"::bytea), 'hex') as transaction_id,
concat('Salesforce - ',contact_lifecyclestage) as crm_type
FROM hubspot_data
ORDER BY transaction_id;
COMMIT;
=== Sample query to get data from Stripe ====
In destinations create a new windsor.ai cloud database destination and create a table with the destination table name custom_stripe_data. \\ Use the connector URL
https://connectors.windsor.ai/stripe?api_key=[your API key]&date_preset=last_7d&fields=date,email,amount,currency,status
Now in the sample below we look at a SaaS model where we expect a customer to have multiple transactions. We attributed the entire customer lifetime value to the initial Stripe transaction.
Go to SQL Lab on charts.windsor.ai and use this script.
BEGIN;
TRUNCATE TABLE crm_conversions;
INSERT INTO crm_conversions (datasource, transaction_id, crm_type,order_date, net_revenue)
SELECT
'custom_stripe_data' as datasource,
encode(sha256(email::bytea), 'hex') as transaction_id,
concat('Stripe - ',status) as crm_type,
MIN(date::DATE) as order_date,
SUM(amount::NUMERIC) as net_revenue
FROM custom_stripe_data
WHERE email <> ''
GROUP BY 1,2,3;
COMMIT;