Skip to content

Conversation

@waleedlatif1
Copy link
Collaborator

Summary

  • mark webhook failed on webhook trigger errors, wasn't tracking 403 and 500's in failedCount

Type of Change

  • Bug fix

Testing

Tested manually

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)

@vercel
Copy link

vercel bot commented Dec 1, 2025

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

1 Skipped Deployment
Project Deployment Preview Comments Updated (UTC)
docs Skipped Skipped Dec 1, 2025 4:07pm

@waleedlatif1 waleedlatif1 marked this pull request as ready for review December 1, 2025 16:10
@greptile-apps
Copy link
Contributor

greptile-apps bot commented Dec 1, 2025

Greptile Overview

Greptile Summary

This PR fixes a bug where webhook trigger errors (403s and 500s) weren't being tracked in the failedCount metric for Gmail and Outlook polling webhooks.

Changes Made:

  • Modified processEmails and processOutlookEmails functions to return both processedCount and failedCount instead of just a count
  • Added failedCount tracking that increments when individual email processing fails
  • Updated webhook status logic: webhooks are now marked as failed only when ALL emails fail to process (processedCount === 0 && failedCount > 0)
  • Improved logging to show both successful and failed email counts

Impact:
The fix ensures that webhooks failing to trigger due to HTTP errors (403, 500) will now properly accumulate in failedCount, allowing the system to auto-disable webhooks after 10 consecutive failures as designed.

Confidence Score: 5/5

  • This PR is safe to merge with minimal risk
  • The changes are straightforward, well-tested manually, and follow existing patterns. The logic correctly tracks failed email processing and only marks webhooks as failed when ALL emails fail, preventing false positives. The implementation is consistent across both Gmail and Outlook services.
  • No files require special attention

Important Files Changed

File Analysis

Filename Score Overview
apps/sim/lib/webhooks/gmail-polling-service.ts 5/5 Added failedCount tracking in processEmails function and conditional webhook status marking based on whether all emails failed vs some succeeded
apps/sim/lib/webhooks/outlook-polling-service.ts 5/5 Added failedCount tracking in processOutlookEmails function and conditional webhook status marking based on whether all emails failed vs some succeeded

Sequence Diagram

sequenceDiagram
    participant Poller as Polling Service
    participant Process as processEmails()
    participant Webhook as Webhook API
    participant DB as Database
    
    Poller->>Process: Process emails array
    
    loop For each email
        Process->>Webhook: POST /api/webhooks/trigger/{path}
        alt Webhook Success (200)
            Webhook-->>Process: Success response
            Process->>Process: processedCount++
        else Webhook Error (403/500)
            Webhook-->>Process: Error response
            Process->>Process: failedCount++
        end
    end
    
    Process-->>Poller: Return {processedCount, failedCount}
    
    alt All emails failed (processedCount=0, failedCount>0)
        Poller->>DB: markWebhookFailed(webhookId)
        DB->>DB: failedCount += 1
        DB->>DB: Check if failedCount >= 10
        alt Reached max failures
            DB->>DB: Set isActive = false
        end
    else At least some succeeded
        Poller->>DB: markWebhookSuccess(webhookId)
        DB->>DB: Reset failedCount = 0
    end
Loading

Copy link
Contributor

@greptile-apps greptile-apps bot left a comment

Choose a reason for hiding this comment

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

2 files reviewed, no comments

Edit Code Review Agent Settings | Greptile

@waleedlatif1 waleedlatif1 merged commit b069034 into staging Dec 1, 2025
9 checks passed
@waleedlatif1 waleedlatif1 deleted the fix/polling branch December 1, 2025 16:18
waleedlatif1 added a commit that referenced this pull request Dec 1, 2025
… sendgrid, linkedin, more tools (#2148)

* feat(tools): added smtp, sendgrid, mailgun, linkedin, fixed permissions in context menu (#2133)

* feat(tools): added twilio sendgrid integration

* feat(tools): added smtp, sendgrid, mailgun, fixed permissions in context menu

* added top level mocks for sporadically failing tests

* incr type safety

* fix(team-plans): track departed member usage so value not lost (#2118)

* fix(team-plans): track departed member usage so value not lost

* reset usage to 0 when they leave team

* prep merge with stagig

* regen migrations

* fix org invite + ws selection'

---------

Co-authored-by: Waleed <walif6@gmail.com>

* feat(i18n): update translations (#2134)

Co-authored-by: waleedlatif1 <waleedlatif1@users.noreply.github.com>

* feat(creators): add verification for creators (#2135)

* feat(tools): added apify block/tools  (#2136)

* feat(tools): added apify

* cleanup

* feat(i18n): update translations (#2137)

Co-authored-by: waleedlatif1 <waleedlatif1@users.noreply.github.com>

* feat(env): added more optional env var examples (#2138)

* feat(statuspage): added statuspage, updated list of tools in footer, renamed routes (#2139)

* feat(statuspage): added statuspage, updated list of tools in footer, renamed routes

* ack PR comments

* feat(tools): add generic search tool (#2140)

* feat(i18n): update translations (#2141)

* fix(sdks): bump sdk versions (#2142)

* fix(webhooks): count test webhooks towards usage limit (#2143)

* fix(bill): add requestId to webhook processing (#2144)

* improvement(subflow): remove all associated edges when moving a block into a subflow (#2145)

* improvement(subflow): remove all associated edges when moving a block into a subflow

* ack PR comments

* fix(polling): mark webhook failed on webhook trigger errors (#2146)

* fix(deps): declare core transient deps explicitly (#2147)

* fix(deps): declare core transient deps explicitly

* ack PR comments

---------

Co-authored-by: Vikhyath Mondreti <vikhyathvikku@gmail.com>
Co-authored-by: waleedlatif1 <waleedlatif1@users.noreply.github.com>
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.

2 participants