Connect Salesforce to Fibbler
- In Fibbler, go to Data Sources
- Click "Connect CRM" and pick Salesforce from the list. The button says "Connect LinkedIn First" and can't be clicked until LinkedIn Ads is connected
- Type your Salesforce My Domain URL, like
MyDomainName.my.salesforce.com(for a sandbox it'sMyDomainName--SandboxName.sandbox.my.salesforce.com), then click "Connect Salesforce" - Authorize the connection using a Salesforce user account
Permissions Fibbler needs
- Read access to Accounts: to match LinkedIn ad data with your CRM companies
- Read access to Opportunities: to calculate influenced pipeline and revenue
- Read/Write access to Custom Fields: only if you enable CRM data sync (to push LinkedIn ad metrics into Salesforce)
- The connecting user must have "Modify Metadata Through Metadata API" and "View All Data" permissions enabled (navigate to Setup > User > Profiles to set these)
Troubleshooting: OAUTH_APPROVAL_ERROR_GENERIC
If you encounter this error when connecting to Salesforce, enable the "Approve Uninstalled Connected Apps" permission in Salesforce:
- Go to Setup > Permission Sets
- Create or edit a permission set
- In System Permissions, enable "Approve Uninstalled Connected Apps"
- Assign to your user and try connecting again
Note: You can disable this permission after successful authentication.
Troubleshooting: OAUTH_APP_BLOCKED
This is a different error from the one above. It means a Salesforce administrator has blocked the Fibbler connected app for your organization, so Salesforce refuses the connection before it reaches Fibbler. Enabling the "Approve Uninstalled Connected Apps" permission will notfix this — the app needs to be unblocked:
- Go to Setup > Connected Apps OAuth Usage
- Find the Fibbler app in the list
- Click Unblock
- Try connecting again
If the Fibbler app does not appear under Connected Apps OAuth Usage, an administrator may need to pre-authorize it via a permission set before it can be used.
Configure your CRM settings
After connecting Salesforce, make sure to complete the CRM configuration in Fibbler:
- Opportunity Types (optional): If you use Opportunity Types in Salesforce to differentiate between New Business and Upsells, tick "We use 'opportunity types' and want to customize them in the Fibbler platform" and pick one type. If you are not using it, leave the box unticked, or keep "All types (default)"
- Set Closed Won and Closed Lost stages: Specify which Salesforce opportunity stages correspond to Closed Won and Closed Lost. Multiple stages can be assigned to each
- Amount: Pick the opportunity field Fibbler should read deal value from, then click "Save stages"
CRM Data Sync setup (optional)
CRM Data Sync is included in your account and writes LinkedIn engagement metrics directly to your Salesforce Account records. You can choose whether or not to enable it. Company Insights, Campaign Analytics, and attribution all function independently of the sync.
If you choose to enable it:
- In Fibbler, go to CRM sync (under Activation in the menu)
- On the "Automatic Sync" tab, switch on the windows you want: Last 90 Days, Last 30 Days or Last 7 Days. Each one has its own toggle
- If you only want data from some campaigns, use the "Campaign specific sync" tab instead
Fibbler will automatically attempt to create the required custom fields on your Salesforce Account object. If automatic setup fails, you can create the fields manually (see below).
The first sync runs when you switch a sync on. After that it runs every Sunday and writes the latest LinkedIn data to Accounts that already exist. CRM Data Sync never creates new Account records.
Custom fields for LinkedIn data
If you need to manually create custom fields, go to Salesforce Setup > Object Manager > Account > Fields & Relationships > New. Select Number as the field type (or Text for engagement levels).
| Field Label | API Name | Data Type |
|---|---|---|
| LinkedIn Ad Clicks (90 days) | fibbler_linkedin_clicks_90_days__c | Number(18, 0) |
| LinkedIn Ad Clicks (30 days) | fibbler_linkedin_clicks_30_days__c | Number(18, 0) |
| LinkedIn Ad Clicks (7 days) | fibbler_linkedin_clicks_7_days__c | Number(18, 0) |
| LinkedIn Ad Impressions (90 days) | fibbler_linkedin_impressions_90_days__c | Number(18, 0) |
| LinkedIn Ad Impressions (30 days) | fibbler_linkedin_impressions_30_days__c | Number(18, 0) |
| LinkedIn Ad Impressions (7 days) | fibbler_linkedin_impressions_7_days__c | Number(18, 0) |
| LinkedIn Ad Engagements (90 days) | fibbler_linkedin_engagements_90_days__c | Number(18, 0) |
| LinkedIn Ad Engagements (30 days) | fibbler_linkedin_engagements_30_days__c | Number(18, 0) |
| LinkedIn Ad Engagements (7 days) | fibbler_linkedin_engagements_7_days__c | Number(18, 0) |
| LinkedIn Paid Video Views (90 days) | fibbler_linkedin_vid_views_90_days__c | Number(18, 0) |
| LinkedIn Paid Video Views (30 days) | fibbler_linkedin_vid_views_30_days__c | Number(18, 0) |
| LinkedIn Paid Video Views (7 days) | fibbler_linkedin_vid_views_7_days__c | Number(18, 0) |
| LinkedIn Organic Engagements (90 days) | fibbler_linkedin_org_engage_90_days__c | Number(18, 0) |
| LinkedIn Organic Engagements (30 days) | fibbler_linkedin_org_engage_30_days__c | Number(18, 0) |
| LinkedIn Organic Engagements (7 days) | fibbler_linkedin_org_engage_7_days__c | Number(18, 0) |
| LinkedIn Organic Impressions (90 days) | fibbler_linkedin_org_impres_90_days__c | Number(18, 0) |
| LinkedIn Organic Impressions (30 days) | fibbler_linkedin_org_impres_30_days__c | Number(18, 0) |
| LinkedIn Organic Impressions (7 days) | fibbler_linkedin_org_impres_7_days__c | Number(18, 0) |
| LinkedIn Engagement Level (90 days) | fibbler_linkedin_eng_level_90_days__c | Text(50) |
| LinkedIn Engagement Level (30 days) | fibbler_linkedin_eng_level_30_days__c | Text(50) |
| LinkedIn Engagement Level (7 days) | fibbler_linkedin_eng_level_7_days__c | Text(50) |
After creating a custom field, set Field-Level Security to visible. Include the profile of the user who connected Fibbler, and any other profile that should see the data. This step is not optional: a field that is hidden from the connecting user is invisible to the sync, so we cannot write to it and will report it as skipped even though it exists.
Custom fields for Google Ads and Meta Ads visits
With the Google Ads or Meta Ads add-on, CRM Data Sync can also push website visits from those channels onto the same Account records. Each channel is set up separately and creates its own fields. The API names are abbreviated because Salesforce caps a custom field API name at 40 characters.
| Field Label | API Name | Data Type |
|---|---|---|
| Google Ads Visits (7 days) | fibbler_gads_visits_7_days__c | Number |
| Google Ads Visits (30 days) | fibbler_gads_visits_30_days__c | Number |
| Google Ads Visits (90 days) | fibbler_gads_visits_90_days__c | Number |
| Meta Ads Visits (7 days) | fibbler_meta_visits_7_days__c | Number |
| Meta Ads Visits (30 days) | fibbler_meta_visits_30_days__c | Number |
| Meta Ads Visits (90 days) | fibbler_meta_visits_90_days__c | Number |
You can also sync a named group of campaigns instead of the whole account. That creates one field per group and window, with an API name like fibbler_gads_7d_vis_abc123__c and a label like "Google Ads Visits (7 days) - Brand Campaigns". The details are in the Google Ads CRM Sync and Meta Ads CRM Sync docs.
Custom fields for Ad signals
Ad signals use a separate set, created on the Account object the first time a signal writes to Salesforce. These are the whole set and nothing else is added. Unlike the LinkedIn fields above, they do not grow: there is one set however many signals you run.
| Field Label | API Name | Data Type |
|---|---|---|
| Fibbler Signal Type | Fibbler_Signal_Type__c | Text(255) |
| Fibbler Signal Date | Fibbler_Signal_Date__c | Date/Time |
| Fibbler Signal Name | Fibbler_Signal_Name__c | Text(255) |
| Fibbler Signal Channels | Fibbler_Signal_Channels__c | Text(255) |
| Fibbler Signal Why | Fibbler_Signal_Why__c | Text(255) |
| Created by Fibbler | Fibbler_Created__c | Checkbox |
The same field-level security note applies. If the connected user cannot create fields, Fibbler emails you this list rather than failing quietly, and the next run picks the fields up once they exist.
What Ad signals write to Salesforce
Besides the fields above, a signal with Salesforce as a destination does three more things in your org.
It keeps an Account list view, one per signal, labelled Fibbler: followed by the signal's name. An account keeps its place for 30 days and then drops out; the record, the fields and the history stay. If you cannot find it, search your Account list views for the signal's name.
It leaves a note on the Account, with the one-line reason a rep reads.
It creates an Account that is missing. Signals are optional and only run once you set one up and turn it on. When a signal sends to Salesforce and the Account isn't there yet, we create it. Each one created this way has Fibbler_Created__c ticked, so you can find them all again. On an Account that already exists, a signal only ever writes the fields above.