AtlasWork, planned itself.

    The AI-native, all-in-one work platform. Tasks, projects, CRM, contracts, and analytics in one calm workspace.

    System status
    • SSO
    • SCIM
    • Two-factor sign-in
    • Audit log

    Product

    • Overview
    • PDF tools
    • Diagram tools
    • People & HR
    • Integrations
    • Marketplace
    • Pricing

    Resources

    • Guides
    • Glossary
    • Compare
    • Docs
    • API reference
    • Support
    • Changelog
    • Status

    Company

    • About
    • Careers
    • Press
    • Contact

    Legal & trust

    • Trust center
    • Security
    • Privacy
    • Terms
    • DPA
    • GDPR
    • SLA
    • Refunds
    • Google API data
    Atlas, a product by wrxstack.com·© 2026 wrxstack·All rights reserved
    PrivacyTermsSecurityStatus

    You are in control of your cookies

    Atlas uses strictly necessary cookies to keep you signed in. With your consent, we add anonymized product analytics, conversion attribution, and remembered preferences. Change your mind any time at /privacy/cookies.

    Off until you agree · Change it any time

    • Necessaryalways on
    • Analyticsopt-in
    • Marketingopt-in
    • Preferencesopt-in
    Skip to documentation
    Docs
    Back to Atlas

    Start here

    • Overview

    Developer

    • REST API guide
    • Authentication
    • API reference
    • MCP (AI agents)
    • MCP tools reference
    • SDKs
    • Quick actions
    • Changelog

    Webhooks

    • Overview
    • Quickstart
    • Events
    • Payloads and headers
    • Security and signing
    • Delivery and retries
    • Managing via API

    Connect

    • Connectors
    • Integrations

    Product

    • Collaboration and chat
    • Signing in and security
    • Client portal

    Reference

    • Glossary
    • Keyboard shortcuts
    • Module reference

    Webhooks

    Events

    A webhook subscribes to events by pattern. A pattern names one event, every event about one kind of resource, or every event at once. This page explains how matching works and lists every event Atlas publishes.

    How event matching works

    A webhook lists one or more event patterns. Atlas sends an event to the webhook when any one of its patterns matches, under three rules.

    • Exact. A pattern such as task.completed matches only that event.
    • Resource wildcard. A pattern ending in .* matches every event about that resource. task.* matches task.created and task.completed, but not project.created. The boundary is the dot, so task.* does not match a name that merely begins with the same letters.
    • Every event. The pattern * matches every published event except the ones that carry personal or pay data: employees, candidates, job applications, job offers, payroll runs, HR tickets, leave requests, reimbursement claims, performance reviews, changes of role, meeting transcripts, files attached to incidents, onboardings and engagements, chat messages, chat channels, huddles, client engagements, deliverables, billing milestones and connected accounts. A webhook receives those only when it names them, or their resource, as in employee.*.
    PatternMatchesDoes not match
    task.completedtask.completedtask.created
    task.*task.created, task.completedtasks.created, project.created
    *every event but the people eventsemployee.hired, payroll_run.paid

    A webhook's events list holds 1 to 50 patterns through /v1/webhooks, each 1 to 64 characters. A pattern that is not a published event, a resource wildcard, or * is refused with a validation error, so a misspelt event name is caught when you save the webhook rather than failing silently.


    Published events

    Every event Atlas publishes, grouped by what it concerns. The same list is offered in Settings and accepted by the API.

    EventGroupMeaning
    task.createdTasksA task was created.
    task.updatedTasksA field on a task was changed. The payload lists the fields that changed.
    task.completedTasksA task moved into a done status, whether by an edit, a workflow transition, or its last open subtask being finished.
    task.assignedTasksA task was assigned to a person, including a person assigning it to themselves.
    task.deletedTasksA task was moved to the trash.
    task.archivedTasksA task was archived.
    task.restoredTasksA task was restored from the archive or the trash.
    task_attachment.addedTasksA file was attached to a task.
    task_attachment.deletedTasksA file was removed from a task.
    task.movedTasksA task moved to another status column on its board, by an edit or a workflow transition.
    project.createdProjectsA project was created.
    project.updatedProjectsA field on a project was changed. The payload lists the fields that changed.
    project.completedProjectsA project was marked done.
    project.archivedProjectsA project was archived.
    project.deletedProjectsA project was deleted.
    project_milestone.createdProjectsA project milestone was created.
    project_milestone.updatedProjectsA project milestone was edited.
    project_milestone.status_changedProjectsA project milestone moved to a new status.
    project_milestone.deletedProjectsA project milestone was deleted.
    project_status_update.createdProjectsA status update was posted on a project.
    project_status_update.updatedProjectsA project status update was edited.
    project_status_update.deletedProjectsA project status update was deleted.
    project.restoredProjectsA project was restored from the archive or the trash.
    project_risk.createdProjectsAn item was added to a project risk register, whether a risk, an issue, a decision, or an assumption.
    project_risk.updatedProjectsAn item in a project risk register was changed. The payload lists the fields that changed.
    goal.createdGoalsAn objective or key result was created.
    goal.updatedGoalsA field on an objective or key result was changed, including its linked project.
    goal.completedGoalsAn objective or key result was marked completed.
    goal.deletedGoalsAn objective or key result was permanently deleted. Key results removed along with their objective do not send events of their own.
    habit.createdHabitsA habit was created.
    habit.completedHabitsA habit was checked in for a day. Checking in again for the same day sends nothing.
    habit.streak_milestoneHabitsA check-in brought the current streak of a habit to exactly 7, 30, 100 or 365.
    comment.createdCommentsA comment was posted.
    comment.updatedCommentsA comment was edited.
    comment.deletedCommentsA comment was deleted.
    team.createdTeamsA team was created.
    team.updatedTeamsA team was renamed or its details changed.
    team.deletedTeamsA team was deleted.
    workspace_invite.createdWorkspaceSomeone was invited to join the workspace, or their invite was sent again.
    workspace_invite.revokedWorkspaceAn invite to join the workspace was revoked.
    workspace_member.joinedWorkspaceA person accepted an invite and joined the workspace.
    workspace_member.role_changedWorkspaceThe role of a workspace member changed.
    workspace_member.removedWorkspaceA member was removed from the workspace.
    data_export.completedWorkspaceA workspace data export finished, and its archive is ready to download.
    announcement.createdAnnouncementsA workspace announcement was created as a draft.
    announcement.updatedAnnouncementsA workspace announcement was edited.
    announcement.publishedAnnouncementsA workspace announcement was published to its members.
    announcement.unpublishedAnnouncementsA workspace announcement was taken down.
    announcement.deletedAnnouncementsA workspace announcement was deleted.
    automation_run.completedAutomationsAn automation finished a run. The run states whether every step succeeded.
    automation_run.failedAutomationsAn automation run failed, or some of its steps did.
    time_approval.requestedTimeTime entries were submitted for approval.
    time_approval.approvedTimeSubmitted time entries were approved.
    time_approval.rejectedTimeSubmitted time entries were rejected.
    time_entry.createdTimeA time entry was logged, or a timer was started.
    time_entry.updatedTimeA time entry was changed, including a running timer being stopped. The payload lists the fields that changed.
    time_entry.deletedTimeA time entry was deleted.
    meeting.createdMeetingsA meeting was created.
    meeting.updatedMeetingsA meeting was changed.
    meeting.deletedMeetingsA meeting was deleted.
    meeting_transcript.readyMeetingsA meeting transcript is complete and ready to read.
    meeting_notes.generatedMeetingsNotes, decisions, and action items were generated for a meeting from its transcript.
    wiki_page.createdWikiA knowledge base page was created.
    wiki_page.updatedWikiA knowledge base page was edited.
    wiki_page.deletedWikiA knowledge base page was deleted.
    wiki_page.publishedWikiA draft knowledge base page was published.
    wiki_page.revision_restoredWikiA knowledge base page was restored to an earlier revision.
    diagram.createdDiagramsA diagram was created.
    diagram.updatedDiagramsA diagram was changed.
    diagram.publishedDiagramsA diagram was published.
    diagram.archivedDiagramsA diagram was archived.
    diagram.restoredDiagramsA diagram was restored.
    diagram.deletedDiagramsA diagram was moved to the trash.
    pdf_job.succeededPDF StudioA PDF conversion finished and its result is ready.
    pdf_job.failedPDF StudioA PDF conversion failed.
    pdf_document.createdPDF StudioA PDF document was created.
    pdf_document.finalizedPDF StudioThe file uploaded for a PDF document was verified, and the document is ready to open.
    crm_account.createdCRMA CRM account was created.
    crm_account.updatedCRMA CRM account was changed.
    crm_account.archivedCRMA CRM account was archived.
    crm_account.restoredCRMA CRM account was restored.
    crm_contact.createdCRMA CRM contact was created.
    crm_contact.updatedCRMA CRM contact was changed.
    crm_contact.archivedCRMA CRM contact was archived.
    crm_deal.createdCRMA deal was created.
    crm_deal.updatedCRMA deal was changed.
    crm_deal.stage_changedCRMA deal moved to another pipeline stage.
    crm_deal.wonCRMA deal was marked won.
    crm_deal.archivedCRMA deal was archived.
    crm_activity.createdCRMAn activity such as a call, an email, a meeting, or a note was logged on a CRM record.
    crm_account.mergedCRMA duplicate CRM account was merged into another account, and the event carries the account that remains.
    crm_deal.lostCRMA deal was marked lost.
    client_onboarding.startedClient onboardingA client onboarding was started.
    client_onboarding.cancelledClient onboardingA client onboarding was cancelled.
    client_onboarding.archivedClient onboardingA client onboarding was archived.
    client_onboarding.completedClient onboardingA client onboarding was completed.
    contract.createdContractsA contract was created.
    contract.updatedContractsA contract was edited.
    contract.approvedContractsA contract was approved in internal review.
    contract.declinedContractsA contract was declined in internal review.
    contract.sentContractsA contract was sent for signature.
    contract.signedContractsEvery party signed a contract.
    contract.activatedContractsA contract became active.
    contract.terminatedContractsA contract was terminated.
    contract.renewedContractsA contract was renewed as a new contract.
    esign_agreement.senteSignAn eSign agreement was sent to its signers.
    esign_agreement.viewedeSignA signer opened an eSign agreement.
    esign_agreement.signedeSignA signer signed an eSign agreement.
    esign_agreement.declinedeSignA signer declined an eSign agreement.
    esign_agreement.voidedeSignAn eSign agreement was voided.
    esign_agreement.completedeSignEvery signer signed an eSign agreement, and it is complete.
    esign_agreement.expiredeSignAn eSign agreement expired before every signer signed.
    booking.createdBookingsA guest booked a time on a booking page.
    booking.cancelledBookingsA booking was cancelled, by its host or by the guest.
    booking.rescheduledBookingsA booking moved to a new time, by its host or by the guest.
    booking_page.createdBookingsA booking page was created.
    booking_page.updatedBookingsA booking page was changed. The payload lists the fields that changed.
    booking.no_show_markedBookingsThe host marked a booking as a no-show because the guest did not attend.
    employee.hiredPeopleAn employee record was created.
    employee.updatedPeopleAn employee record was changed.
    employee.terminatedPeopleAn employee was terminated.
    hr_ticket.createdPeopleAn employee raised an HR helpdesk ticket.
    hr_ticket.resolvedPeopleAn HR helpdesk ticket was resolved.
    leave_request.requestedPeopleA leave request was filed. When its policy approves it automatically, it arrives already approved.
    leave_request.approvedPeopleA leave request was approved.
    leave_request.rejectedPeopleA leave request was rejected.
    reimbursement_claim.createdPeopleA reimbursement claim was created as a draft.
    reimbursement_claim.submittedPeopleA reimbursement claim was submitted for approval.
    reimbursement_claim.approvedPeopleA reimbursement claim was approved.
    reimbursement_claim.rejectedPeopleA reimbursement claim was rejected.
    reimbursement_claim.paidPeopleA reimbursement claim was paid.
    performance_review.createdPeopleA performance review was created.
    performance_review.updatedPeopleA performance review was edited.
    performance_review.finalizedPeopleA performance review was finalized with its final rating.
    role_change.requestedPeopleA change of role was requested for an employee.
    role_change.manager_approvedPeopleA manager approved a requested change of role.
    role_change.appliedPeopleHR approved a change of role, and it was applied to the employee.
    role_change.rejectedPeopleA requested change of role was rejected.
    candidate.createdHiringA candidate was added.
    job_application.createdHiringA candidate applied, or was added, to a job opening.
    job_application.advancedHiringA job application moved to the next stage.
    job_application.rejectedHiringA job application was rejected.
    job_offer.sentHiringA job offer was sent to the candidate.
    job_offer.acceptedHiringA candidate accepted a job offer.
    job_offer.declinedHiringA candidate declined a job offer.
    payroll_run.approvedPayrollA payroll run was approved.
    payroll_run.paidPayrollA payroll run was marked paid.
    incident.declaredIncidentsAn incident was declared.
    incident.acknowledgedIncidentsA responder acknowledged an incident.
    incident.severity_changedIncidentsThe severity of an incident was raised or lowered.
    incident.status_changedIncidentsAn incident moved to a new status.
    incident.mitigatedIncidentsThe impact of an incident was mitigated.
    incident.resolvedIncidentsAn incident was resolved.
    incident.postmortem_publishedIncidentsThe postmortem for an incident was published.
    chat_message.createdChatA chat message was posted. Only a message in a public workspace channel is sent with its text.
    chat_message.updatedChatThe text of a chat message was edited. Only a message in a public workspace channel is sent with its text.
    chat_message.deletedChatA chat message was deleted.
    chat_channel.createdChatA chat channel was created. Opening a direct message does not send this event.
    chat_channel.archivedChatA chat channel was archived.
    huddle.startedChatA huddle was started.
    huddle.endedChatA huddle ended, because its host or an administrator ended it or its last participant left.
    engagement.createdEngagementsA client engagement was created.
    engagement.updatedEngagementsThe details of a client engagement were edited.
    engagement.transitionedEngagementsA client engagement moved to another lifecycle status.
    engagement.closedEngagementsA client engagement was closed.
    deliverable.submittedEngagementsA deliverable was submitted to the client for review.
    deliverable.approvedEngagementsA deliverable was approved and accepted.
    deliverable.rejectedEngagementsA deliverable was rejected.
    billing_milestone.reachedEngagementsA billing milestone was reached and its fee earned.
    connector.connectedIntegrationsA connector was connected to the workspace, or a revoked connection was connected again.
    connector.disconnectedIntegrationsA connector connection was disconnected and its stored credentials were cleared.
    connector.sync_failedIntegrationsA scheduled sync for a connector connection failed.
    form_submission.createdFormsSomeone submitted a form, and a task was created from the answers.
    attachment.createdAttachmentsA file was attached to an incident, a client onboarding or an engagement, and passed verification.
    attachment.deletedAttachmentsA file was removed from an incident, a client onboarding or an engagement.
    report.deliveredReportsA scheduled report was generated and sent to its recipients.
    subscription_plan.changedBillingThe workspace moved to a different plan. The payload carries the plan it was on before.
    invoice.paidBillingA charge was paid, and a tax invoice was issued for it.
    *All eventsEvery event in this list, including any added later, except the People, Hiring and Payroll events, which you choose by name.

    How events are produced

    Where events come from, and what an event carries.

    Events come from the audit log

    Every event is recorded in the workspace audit log at the moment the action happens, and that record is what produces the webhook event. The resource in the event is loaded afresh as the API returns it, so data.object has the same shape as a GET on that resource. The one exception is a resource that has been permanently deleted, which is described by its id and deletedAt alone. Subscribe narrowly in production, to only the events you handle.

    On this page

    • How event matching works
    • Published events
    • How events are produced