Skip to content

fix(integrations): stop overclaiming instant delivery for polling-only triggers, add icon borders#5489

Closed
waleedlatif1 wants to merge 2 commits into
stagingfrom
seo/integrations-copy-review
Closed

fix(integrations): stop overclaiming instant delivery for polling-only triggers, add icon borders#5489
waleedlatif1 wants to merge 2 commits into
stagingfrom
seo/integrations-copy-review

Conversation

@waleedlatif1

Copy link
Copy Markdown
Collaborator

Summary

  • Integration landing pages ("Real-time triggers" section, FAQ, keywords) claimed "instant... no polling, no delay" for every integration with a registered trigger, even ones that only poll on an interval (HubSpot, Outlook) — swapped in honest copy for polling-only integrations
  • Threaded a polling flag through generate-docs.tsintegrations.json → the landing page so this is data-driven, not hardcoded per integration
  • Added missing tile borders to the Agent-templates icon chain and the "Start automating {name} today" CTA icons, matching the bordered tile style already used elsewhere on the same page (Related integrations, workspace integrations page)

Type of Change

  • Bug fix

Testing

Tested manually (typecheck + biome clean on all changed files; regenerated integrations.json and verified HubSpot/Outlook now carry polling: true while GitHub/Jira/Linear stay false)

Checklist

  • Code follows project style guidelines
  • Self-reviewed my changes
  • Tests added/updated and passing
  • No new warnings introduced
  • I confirm that I have read and agree to the terms outlined in the Contributor License Agreement (CLA)

…y triggers, add icon borders

- Integration landing pages ("Real-time triggers" section, FAQ, keywords) claimed "instant... no polling, no delay" for every integration with a registered trigger, even ones that only poll on an interval (HubSpot, Outlook) - swapped in honest copy for polling-only integrations
- Threaded a polling flag through generate-docs.ts -> integrations.json so this is data-driven, not hardcoded per integration
- Added missing tile borders to the Agent-templates icon chain and the "Start automating {name} today" CTA icons, matching the bordered tile style already used elsewhere on the page
@vercel

vercel Bot commented Jul 7, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated (UTC)
docs Skipped Skipped Jul 7, 2026 8:03pm

Request Review

@cursor

cursor Bot commented Jul 7, 2026

Copy link
Copy Markdown

PR Summary

Low Risk
Changes are limited to generated catalog metadata, docs generation, and marketing/SEO copy on landing pages—no workflow runtime or auth behavior.

Overview
Integration landing pages no longer describe every trigger as instant webhook delivery. A polling flag is extracted in generate-docs.ts, stored on each trigger in integrations.json, and typed on TriggerInfo. The [slug]/page helpers hasWebhookTrigger / triggerKindLabel drive FAQ answers, capability phrases, SEO keywords (webhook only when applicable), screen-reader text, and the triggers intro—scheduled copy for poll-only integrations (e.g. HubSpot triggersIntro in seo-content.ts), webhook copy when at least one push trigger exists.

Minor UI: border border-[var(--border-1)] on template-chain icons and bottom CTA logos. The regenerated catalog also tags triggers with polling: true/false and includes unrelated operation-count/description updates across many integrations.

Reviewed by Cursor Bugbot for commit 69bddc4. Configure here.

Comment thread apps/sim/app/(landing)/integrations/(shell)/[slug]/page.tsx
Comment thread apps/sim/app/(landing)/integrations/(shell)/[slug]/page.tsx
@greptile-apps

greptile-apps Bot commented Jul 7, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR fixes misleading "instant delivery / no polling" copy on integration landing pages for triggers that actually operate on a polling schedule (HubSpot, Outlook, Gmail, Google Calendar, Google Drive, Google Sheets), and threads a data-driven polling flag from trigger source files through generate-docs.tsintegrations.json → the landing page so copy stays accurate automatically. It also adds missing tile borders to agent-template icon chains and the CTA section to match the bordered style used elsewhere on the same page.

  • Adds hasWebhookTrigger and triggerKindLabel helpers covering all-polling, all-webhook, and mixed cases; replaces every hardcoded "real-time trigger" label, FAQ answer, hero paragraph, and SEO keyword with the correct data-driven variant.
  • Extends the TriggerInfo type with a required polling: boolean field and updates generate-docs.ts to extract it from trigger source segments via regex (defaults to false/webhook when absent).
  • Regenerates integrations.json with explicit polling flags on all triggers and adds new operations for Athena, Attio, Textract, CloudFormation, CloudWatch, and CodePipeline.

Confidence Score: 5/5

Safe to merge — changes are confined to landing-page copy, SEO metadata, icon styling, and a regenerated JSON catalog; no runtime logic or data paths are affected.

All changed code paths are landing-page rendering and static JSON generation. The triggerKindLabel helper correctly handles all three trigger-mix cases. The polling extraction in the generator defaults safely to false. The only nits are a missing operation description in the JSON and a developer-experience documentation gap for future polling triggers.

No files require special attention. integrations.json has a minor empty description on the new Textract operation, and generate-docs.ts relies on contributors remembering to set polling: true in trigger sources.

Important Files Changed

Filename Overview
apps/sim/app/(landing)/integrations/(shell)/[slug]/page.tsx Adds hasWebhookTrigger and triggerKindLabel helpers; replaces all hardcoded real-time trigger phrases with data-driven labels and fixes polling-specific FAQ copy; adds missing icon borders.
apps/sim/app/(landing)/integrations/data/seo-content.ts Corrects HubSpot triggersIntro from misleading webhook language to accurate polling description.
apps/sim/lib/integrations/integrations.json Regenerated with explicit polling flags on all triggers; one new Textract operation has an empty description.
apps/sim/lib/integrations/types.ts Adds required polling: boolean to TriggerInfo interface, keeping the type in sync with the JSON schema.
scripts/generate-docs.ts Threads the polling flag through the generator via regex; defaults to false (webhook) when absent, which is correct today but requires discipline from future contributors adding polling triggers.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A["Trigger source file\n(polling: true / absent)"] -->|regex scan| B["generate-docs.ts\nbuildTriggerRegistry()"]
    B -->|polling: boolean| C["integrations.json\nTriggerInfo[]"]
    C -->|parsed at build| D["page.tsx\nIntegration object"]
    D --> E{hasWebhookTrigger?}
    E -->|all polling| F["Label: scheduled\nCopy: Sim checks X regularly"]
    E -->|all webhook| G["Label: real-time\nCopy: runs the instant an event happens"]
    E -->|mixed| H["Label: scheduled and real-time"]
    F --> I[FAQ / hero / metadata keywords]
    G --> I
    H --> I
Loading
%%{init: {'theme': 'base', 'themeVariables': {"darkMode": true, "background": "#0d1117", "primaryColor": "#21262d", "primaryTextColor": "#e6edf3", "primaryBorderColor": "#8b949e", "lineColor": "#8b949e", "textColor": "#e6edf3", "edgeLabelBackground": "#161b22", "actorBkg": "#21262d", "actorBorder": "#8b949e", "actorTextColor": "#e6edf3", "actorLineColor": "#8b949e", "signalColor": "#8b949e", "signalTextColor": "#e6edf3", "noteBkgColor": "#373320", "noteBorderColor": "#d4a72c", "noteTextColor": "#f0e6c0", "labelBoxBkgColor": "#21262d", "labelBoxBorderColor": "#8b949e", "labelTextColor": "#e6edf3", "loopTextColor": "#e6edf3", "activationBkgColor": "#30363d", "activationBorderColor": "#8b949e"}}}%%
flowchart TD
    A["Trigger source file\n(polling: true / absent)"] -->|regex scan| B["generate-docs.ts\nbuildTriggerRegistry()"]
    B -->|polling: boolean| C["integrations.json\nTriggerInfo[]"]
    C -->|parsed at build| D["page.tsx\nIntegration object"]
    D --> E{hasWebhookTrigger?}
    E -->|all polling| F["Label: scheduled\nCopy: Sim checks X regularly"]
    E -->|all webhook| G["Label: real-time\nCopy: runs the instant an event happens"]
    E -->|mixed| H["Label: scheduled and real-time"]
    F --> I[FAQ / hero / metadata keywords]
    G --> I
    H --> I
Loading

Reviews (2): Last reviewed commit: "fix(integrations): address review feedba..." | Re-trigger Greptile

Comment thread apps/sim/app/(landing)/integrations/(shell)/[slug]/page.tsx Outdated
…and FAQ wording

- triggerKindLabel() now covers the mixed webhook+polling case instead of labeling any integration with at least one webhook trigger as fully "real-time"
- The second trigger FAQ answer no longer implies push delivery ("X sends") for polling-only integrations
@waleedlatif1

Copy link
Copy Markdown
Collaborator Author

@greptile-apps re the outside-diff comment on the second FAQ answer ("${name} sends" implying push delivery for polling integrations) — fixed, same commit as the inline mixed-trigger fix (69bddc4). The answer now reads "...the next time ${name} is checked" for polling-only integrations instead of "delivered the instant ${name} sends it".

@waleedlatif1

Copy link
Copy Markdown
Collaborator Author

@greptile

@waleedlatif1

Copy link
Copy Markdown
Collaborator Author

@cursor review

@greptile-apps

greptile-apps Bot commented Jul 7, 2026

Copy link
Copy Markdown
Contributor

Confirmed — the fix is in place. The second trigger FAQ answer in buildFAQs now correctly branches on triggersArePolling:

${triggersArePolling ? `the next time ${name} is checked` : `delivered the instant ${name} sends it`}

That's exactly right. The "Real-time triggers" section intro copy is also handled — polling-only integrations get "Sim checks {name} regularly…" instead of "no polling, no delay". Everything looks good here.

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ 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 69bddc4. Configure here.

@waleedlatif1 waleedlatif1 deleted the seo/integrations-copy-review branch July 7, 2026 21:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant