Skip to content

Connections

System → Integrations (/integrations) has two tabs. Both store their credentials in the same per-user integrations table, and PULSE seals access and refresh tokens before writing them to the database.

There is no OAuth sign-in flow for these platforms. You paste a token or a service-account key that you created on the platform yourself.

The Accounts tab covers four platforms and uses IntegrationService.ConfigureIntegration.

PlatformWhat you paste
LinkedInAn access token, and optionally an account ID
InstagramAn access token, and optionally an account ID
Google AnalyticsThe full JSON key of a Google Cloud service account with access to the GA4 property, and the numeric Property ID (GA4 Admin → Property Settings). Both are required.
Google AdsThe JSON key of a service account with domain-wide delegation (scope adwords), the Ads Customer ID, a Developer Token, an optional Login Customer ID (manager account), and the Subject email the service account impersonates. All but the login customer ID are required.

Test checks the credentials (TestConnection) and records the result as the integration’s status. For Google Analytics and Google Ads, PULSE runs a real API check with its own client. For LinkedIn and Instagram it calls the platform’s profile endpoint with your token.

Disconnect removes the stored credentials (DisconnectIntegration).

What each connection unlocks

HubSpot

  • Leads → Sync Now pulls contacts. Without HubSpot you get HubSpot isn't connected yet — configure it on the Integrations page first.
  • Find Leads pushes new prospects to HubSpot.
  • The daily churn engine reviews synced leads.
  • The WhatsApp edge allows only senders who are contacts in HubSpot. See Telephony and messaging.

Google Analytics

The Trends tab on Insights: sync, trends, and forecasts. Without it you get Google Analytics isn't connected yet — configure it on the Integrations page first.

GitHub

  • Blog publishing to your website opens a pull request, or pushes a commit, with this token. The target repository is set by the administrator in PULSE_SITE_REPO, not here. See Site pipeline.
  • Audit fixes in pr mode open a pull request against the owner and repo you set on this connection. If repo is missing you get github integration is missing a target owner/repo.

LinkedIn and Instagram

These store a token and can be tested. The scheduled LinkedIn publisher does not use the token you paste here: it uses an operator-supplied token. There is no working Instagram publisher yet. See which channels can publish.