Third-party connections
Create and manage connections in Dashboard → Integrations. Each connection stores one provider identity, authentication method, settings, capabilities, health state, and encrypted credential bundle.
Available providers
| Category | Providers | Primary use |
|---|---|---|
| Commerce | Shopify, WooCommerce, BigCommerce | Product catalog sync, commerce webhooks, workflow actions |
| Advertising | Facebook Ads, Google Ads | Accounts, campaigns, audiences, and daily insight sync |
| Analytics | Google Analytics 4, Meta Pixel and Conversions API, RudderStack | Export canonical events and conversions |
| Affiliate | AWIN, CJ Affiliate | Reporting and affiliate-aware workflow actions |
| Mailchimp, Constant Contact, SendGrid | Lead capture and lifecycle or transactional email actions | |
| AI | OpenAI, Anthropic Claude, Google Gemini | AI completion steps in workflows |
| Productivity | Slack, Telegram, Google Sheets, Google Drive | Notifications and workflow output delivery |
The dashboard shows the capabilities declared by each provider. A capability is not a blanket permission: the selected authentication method, provider scopes, and connection settings still determine what an operation can do.
Authentication methods
| Method | Providers and notes |
|---|---|
| OAuth 2.0 | Shopify, Facebook Ads, Google Ads, Mailchimp, Constant Contact, Slack, Google Sheets, Google Drive. Upsurge uses a merchant-owned OAuth app. |
| API key | WooCommerce, BigCommerce, GA4, Meta, RudderStack, AWIN, CJ, Mailchimp, SendGrid, OpenAI, Anthropic, Gemini, Telegram. The exact credential fields vary by provider. |
| Bearer token | Shopify Admin API and Slack bot/user token alternatives. |
| Incoming webhook | Slack can send notifications through a Slack webhook URL. |
| Service account | Google Sheets and Google Drive can use server-to-server credentials; share the target file or folder with that account. |
OAuth-only connections become connected only after the provider callback succeeds. The callback URL is hosted by Upsurge on dashboard.upsur.ge; you do not need to host an OAuth callback on your storefront.
Upsurge does not supply a shared OAuth client for merchant connections. Create an app in the provider console, then enter its client ID and client secret when prompted. Shopify additionally requires a *.myshopify.com shop domain; Google Ads additionally requires a developer token.
Connect and verify
- Open Dashboard → Integrations and choose a provider.
- Select an authentication method when the provider offers more than one.
- Enter the requested credentials and settings. For commerce providers, select the Upsurge site that should receive products.
- For OAuth, continue to the provider, approve the requested scopes, and return to Upsurge.
- Select Verify. Verification calls the provider with the stored credentials and records a sanitized health result.
Connection states include pending, connected, needs_attention, and revoked. Fix credentials or settings when a connection needs attention, then verify it again.
Provider setup notes
Commerce
- Shopify: use merchant OAuth with
read_productsor an Admin API access token. OAuth requires the permanent*.myshopify.comdomain. - WooCommerce: create REST API consumer credentials and provide the HTTPS store URL.
- BigCommerce: provide the store hash and access token.
Bind each connection to an Upsurge site before syncing products. See Product sync.
Ads and analytics
- Facebook Ads: authorize the read-only
ads_readscope. - Google Ads: authorize the Google Ads scope and provide your developer token; customer and manager-account IDs are optional routing settings.
- GA4: provide an API secret and measurement ID.
- Meta: provide a Conversions API access token and pixel ID; a test event code is optional.
- RudderStack: provide a Node source write key and your workspace data-plane URL.
- AWIN and CJ: provide the relevant bearer token and account identifiers.
Email, AI, and productivity
- Mailchimp: use OAuth or an API key whose suffix identifies the server, and configure the target audience when appropriate.
- Constant Contact: authorize contact, campaign, and offline access.
- SendGrid: provide an API key; transactional sends avoid automatic retries that could duplicate email.
- OpenAI, Anthropic, Gemini: provide a provider API key and select the connection in an AI workflow node.
- Slack and Telegram: configure the target channel or chat in the workflow action.
- Google Sheets and Google Drive: use OAuth or a service account; share target resources with the service account.
Manage a connection through the API
These merchant endpoints require a Firebase ID token. Use them from a trusted application server; do not send provider credentials from a public storefront.
GET /api/v1/integrations/connections
POST /api/v1/integrations/connections
GET /api/v1/integrations/connections/{connectionId}
PATCH /api/v1/integrations/connections/{connectionId}
DELETE /api/v1/integrations/connections/{connectionId}
POST /api/v1/integrations/connections/{connectionId}/verify
POST /api/v1/integrations/connections/{connectionId}/sync
POST /api/v1/integrations/connections/{connectionId}/actions
For example, create a WooCommerce connection:
curl --request POST 'https://dashboard.upsur.ge/api/v1/integrations/connections' \
--header "Authorization: Bearer $FIREBASE_ID_TOKEN" \
--header 'Content-Type: application/json' \
--data '{
"provider_id": "woocommerce",
"name": "Primary store",
"credentials": {
"consumerKey": "'"$WOO_CONSUMER_KEY"'",
"consumerSecret": "'"$WOO_CONSUMER_SECRET"'"
},
"settings": {
"store_url": "https://shop.example.com",
"website_id": "site_123"
}
}'
Successful responses never echo the credential values. DELETE revokes a connection and retains its audit record instead of deleting it.
Troubleshooting
| Symptom | Check |
|---|---|
| OAuth redirects back with an error | Provider app callback URL, client ID/secret, requested scopes, and the ten-minute authorization window |
| Verification fails | Credential permissions, token expiry, provider account access, and required connection settings |
| Workflow action is unavailable | The provider connection is connected and declares workflow_action |
| Commerce sync is unavailable | The connection is Shopify, WooCommerce, or BigCommerce, is connected, and has an Upsurge site selected |
| Google service account cannot write | The spreadsheet or folder is shared with the service-account email |