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.

Scope
Frontend (attik-frontend)
- Blipp settings page:
src/app/tools/settings/integrations/blipp/page.tsx. - When
GET blipp/statusreports connected, the page rendersDeleteAnythingBtnWModelwithserverUrl='integration'and body{ _integrationId: 'blipp', active: false }— aPATCHto/integrationwith no Mongo document id. - Deactivate handler:
src/components/ui/DeleteAnythingBtnWModel.tsxsendsPATCHto whateverserverUrlis passed. - Working pattern to mirror: QuickBooks deactivate in
src/app/tools/settings/integrations/quickbooks/page.tsxfetches the integration row first (GET integration?_integrationId=quickbooks), then patchesintegration/${integration._id}with{ active: false }. - HubSpot uses a dedicated disable endpoint instead (
HubSpotConnectedState.tsx→POST hubspot/disable).
Backend (attik-backend)
- Integration routes:
src/routes/integration.ts— deactivate is only supported asPATCH /integration/:id, which loads the document viagetSingleItem(findById(req.params.id)). Missing or invalid id → 404"Integration not found or does not exist". - There is no route that accepts
_integrationIdin the body onPATCH /integration. - Blipp OAuth and status:
src/routes/blipp.ts—GET /blipp/statusfinds an activeintegrationsrow with_integrationId: 'blipp';POST /blipp/callbackcreates/updates that row on connect. NoPOST /blipp/disableendpoint exists today (unlike HubSpot'sPOST /hubspot/disableinsrc/routes/hubspot.ts). - Blipp action-flow sends check
activeintegration insrc/util/functions/actionFlows/sendBlippReviewRequest.ts.
Decision needed
- Fix on the frontend only (fetch integration
_id, patch by id — QuickBooks pattern), or add a dedicatedPOST /blipp/disableendpoint (HubSpot pattern). Either should setintegration.active = falseso status and action flows respect the disabled state.
Interim workaround (ops / eng)
- Manually set
active: falseon theintegrationsdocument 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