Bug: Blipp integration cannot be disabled — deactivate returns 404

Objective

  • Allow ops and brand admins to turn off Blipp Reviews from Tools → Settings → Integrations → Blipp without errors.
  • Several brands need Blipp disabled temporarily while waiting for Google Business Profile (GMB) approval; the integration should stop sending review requests once deactivated.

Background

  • Shayna attempted to disable Blipp for RIA ATL, NHI, SWF, SHS, and Top Choice while GMB approval is pending.
  • Clicking deactivate on the Blipp settings page returns a 404 instead of disabling the integration.
  • Ryan reproduced the failure.
  • The Blipp page correctly shows Connected (via GET blipp/status), but the deactivate action calls the wrong integration API — so connected brands cannot be turned off from the UI.
  • This affects any brand with an active Blipp connection, not only the five listed above; those brands are the ones ops tried first.

image.png

Scope

Frontend (attik-frontend)

  • Blipp settings page: src/app/tools/settings/integrations/blipp/page.tsx.
  • When GET blipp/status reports connected, the page renders DeleteAnythingBtnWModel with serverUrl='integration' and body { _integrationId: 'blipp', active: false } — a PATCH to /integration with no Mongo document id.
  • Deactivate handler: src/components/ui/DeleteAnythingBtnWModel.tsx sends PATCH to whatever serverUrl is passed.
  • Working pattern to mirror: QuickBooks deactivate in src/app/tools/settings/integrations/quickbooks/page.tsx fetches the integration row first (GET integration?_integrationId=quickbooks), then patches integration/${integration._id} with { active: false }.
  • HubSpot uses a dedicated disable endpoint instead (HubSpotConnectedState.tsxPOST hubspot/disable).

Backend (attik-backend)

  • Integration routes: src/routes/integration.ts — deactivate is only supported as PATCH /integration/:id, which loads the document via getSingleItem (findById(req.params.id)). Missing or invalid id → 404 "Integration not found or does not exist".
  • There is no route that accepts _integrationId in the body on PATCH /integration.
  • Blipp OAuth and status: src/routes/blipp.tsGET /blipp/status finds an active integrations row with _integrationId: 'blipp'; POST /blipp/callback creates/updates that row on connect. No POST /blipp/disable endpoint exists today (unlike HubSpot's POST /hubspot/disable in src/routes/hubspot.ts).
  • Blipp action-flow sends check active integration in src/util/functions/actionFlows/sendBlippReviewRequest.ts.

Decision needed

  • Fix on the frontend only (fetch integration _id, patch by id — QuickBooks pattern), or add a dedicated POST /blipp/disable endpoint (HubSpot pattern). Either should set integration.active = false so status and action flows respect the disabled state.

Interim workaround (ops / eng)

  • Manually set active: false on the integrations document where _integrationId: 'blipp' for affected company ids until the UI fix ships.

References

  • Slack report: Message from ryan
  • Blipp settings UI: attik-frontend/src/app/tools/settings/integrations/blipp/page.tsx
  • Integration API: attik-backend/src/routes/integration.ts
  • Blipp routes: attik-backend/src/routes/blipp.ts
  • QuickBooks deactivate reference: attik-frontend/src/app/tools/settings/integrations/quickbooks/page.tsx

Please authenticate to join the conversation.

Upvoters
Status

Completed

Board
🏠

Main App

Date

2 days ago

Author

Linear

Subscribe to post

Get notified by email when there are changes.