feat(sendblue): add Sendblue iMessage/SMS integration with tools and triggers#4917
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub. |
PR SummaryMedium Risk Overview Tools & block: New tools cover single/group send (text, media, iMessage styles), iMessage-vs-SMS evaluation, typing indicators, and message lookup. The Webhooks: Two triggers—Message Received (inbound) and Message Status Updated (outbound)—with a provider handler that routes on Docs & codegen: Reviewed by Cursor Bugbot for commit cb8de5b. Configure here. |
|
@greptile review |
|
@cursor review |
There was a problem hiding this comment.
✅ Bugbot reviewed your changes and found no new issues!
1 issue from previous review remains unresolved.
Comment @cursor review or bugbot run to trigger another review on this PR
Reviewed by Cursor Bugbot for commit e945547. Configure here.
Greptile SummaryAdds a complete Sendblue iMessage/SMS integration: 5 tools (
Confidence Score: 5/5Safe to merge — all new code is additive, credential handling is correct, and the webhook routing logic has been validated against Sendblue's documented payload schema. The integration introduces only new files and registry additions; no existing code paths are modified outside the docs generator (two narrow, well-tested fixes). Credential visibility, auth header construction, idempotency keying, and authType in the catalog are all correct. The single comment is a UX suggestion that does not affect correctness or data integrity. No files require special attention. Important Files Changed
Sequence DiagramsequenceDiagram
participant User as Sim Workflow
participant Block as SendblueBlock
participant Tool as Tool Executor
participant SB as Sendblue API
participant WH as Webhook Handler
User->>Block: Select operation + credentials
Block->>Tool: "executeTool(sendblue_*)"
Tool->>SB: HTTP request (sb-api-key-id / sb-api-secret-key headers)
SB-->>Tool: 200 OK / 4xx error
Tool-->>Block: transformResponse output / throw on !ok
Note over WH: Inbound & outbound events share one URL
SB->>WH: POST webhook payload (is_outbound flag)
WH->>WH: matchEvent: check SENDBLUE_TRIGGER_IS_OUTBOUND[triggerId]
WH->>WH: extractIdempotencyId: handle + status key
WH-->>User: formatInput → trigger outputs (snake_case)
Reviews (3): Last reviewed commit: "chore(sendblue): use SendblueSendStyle t..." | Re-trigger Greptile |
Greptile SummaryThis PR introduces a complete Sendblue iMessage/SMS integration: 5 API tools (
Confidence Score: 4/5The integration is safe to merge; all tools follow established codebase conventions and credentials are handled correctly with The core tools, triggers, and block all follow the project's established patterns cleanly. The three findings are cosmetic or defensive: a catalog
Important Files Changed
Sequence DiagramsequenceDiagram
participant User as User / LLM
participant Block as SendblueBlock
participant Tool as sendblue_* Tool
participant API as Sendblue API
participant WH as Webhook Handler
participant Trigger as Sendblue Trigger
User->>Block: Configure operation + credentials
Block->>Tool: Dispatch selected tool
Tool->>API: "POST/GET with sb-api-key-id & sb-api-secret-key headers"
API-->>Tool: JSON response
Tool-->>Block: success + output
Note over WH,Trigger: Inbound / outbound path
API->>WH: POST webhook payload (is_outbound: false/true)
WH->>WH: getProviderConfig → triggerId
WH->>WH: matchEvent: check is_outbound vs TRIGGER_IS_OUTBOUND map
alt "is_outbound == false"
WH->>Trigger: message_received trigger fires
else "is_outbound == true"
WH->>Trigger: message_status_updated trigger fires
end
WH->>WH: extractIdempotencyId → message_handle (dedup)
WH->>WH: formatInput → structured output payload
|
…uting map, uniform output casing, api-key authType
|
@greptile review |
|
@cursor review |
There was a problem hiding this comment.
✅ Bugbot reviewed your changes and found no new issues!
Comment @cursor review or bugbot run to trigger another review on this PR
Reviewed by Cursor Bugbot for commit cb8de5b. Configure here.
|
Update: all of Greptile's flagged items are addressed in commits a645f3e..842fdfe (its summary above was generated on the original commit and is now stale):
Cursor Bugbot is clean on the latest commit, and both |
Avoids a webhook-providers -> triggers cross-subgraph import (single source of truth in the handler, its only runtime consumer).

Summary
sb-api-key-id/sb-api-secret-key, basehttps://api.sendblue.comsend_message,send_group_message,evaluate_service(iMessage vs SMS lookup),send_typing_indicator,get_messagemessage_received(inbound) andmessage_status_updated(outbound status), with a provider handler that routes byis_outbound, dedupes onmessage_handle, and maps the full payloadSendblueBlockMeta(8 templates, 3 skills), brand icon, and generated docs (incl. a manual description section)Type of Change
Testing
Tested manually against the live Sendblue API:
evaluate-service,send-typing-indicator,get_message,/api/lines,/accounts/limitsreturn exactly the shapes the tools mapoutputs↔ handlerformatInputkeys diff to zerotscclean,biomeclean,check:api-validationpassesChecklist