25483891 CustomerApi.Jobs.PublishNotificationJob
Queue notifications
Attempt 5 of 5
Priority 0
Tags ...
Node customer_api@10.10.1.109
Queue Time 00:00.102
Run Time 00:00.078
Inserted 7h ago
Scheduled 7h ago
Completed
Cancelled
Discarded 7h ago

Args

%{
  "account_id" => "103065",
  "data" => %{
    "account_insight_agent_id" => "04b257e7-8eb6-4f0e-9e5f-bb6447498b09",
    "insights" => [
      %{
        "action_plan" => "Prioritize a focused QA pass on the three flows above. Start with **Estimates cleanup post opt-in**, then **Referral Tool Tip - Job Paid Dec25**, then **BF > CJ > Top nav > New button**. For each one: replace fragile selectors with stable product-owned attributes, remove unnecessary click-wait dependencies where possible, and narrow eligibility to pages and contexts where the target UI is consistently present.",
        "actions" => [],
        "cta_text" => "Review flow health check",
        "entity_id" => nil,
        "entity_type" => nil,
        "expected_impact" => "Reducing selector failures in these three flows should lower live error volume substantially and recover more successful flow views/completions, improving activation and feature engagement in high-traffic product areas.",
        "finding" => "**Subject line:** Housecall Pro | Last 30 days (2026-04-02 to 2026-05-01)\n\n**1. Flows Attempted but Never Started**  \nI could not verify exact per-flow **attempt-to-start failure rates** in this run because the available analytics did not expose a reliable `flow_attempted` → `flow_started` join by flow, user, and session. Based on the strongest live risk signals available — **very high error volume, low completion, and brittle targeting/selectors** — these are the most likely contributors:\n\n1. **Estimates cleanup post opt-in**  \n- Supporting evidence: **31,246** unique users, **4,621** seen, **122** completions, **63,057** errors  \n- Most common pages / user segments: targets **`/app/estimates/`** on production and staging for users with **Estimates cleanup (opt-in = true)**  \n- Likely cause: multiple brittle positional/MUI selectors and click-wait logic increase the chance the flow qualifies but never renders cleanly  \n- Recommended next step: QA each step on the live estimate page and replace positional selectors with stable app-owned attributes where possible\n\n2. **Referral Tool Tip - Job Paid Dec25**  \n- Supporting evidence: **10,826** unique users, **4,356** seen, **62** completions, **2,732** errors  \n- Most common pages / user segments: triggered on **Job paid** at **`/app/jobs`** for a targeted segment  \n- Likely cause: the step is anchored to a generic **`h1`** selector, which is vulnerable to layout variation and event timing  \n- Recommended next step: retarget the tooltip to a stable referral entry point instead of the page header and retest the trigger sequence\n\n3. **BF > CJ > Top nav > New button**  \n- Supporting evidence: **2,600** unique users, **1,473** seen, **1,164** completions, **1,824** errors  \n- Most common pages / user segments: eligible on **all URLs (`.*`)** across prod, staging, and preprod  \n- Likely cause: broad eligibility plus click-wait dependencies on navigation elements creates unnecessary exposure to DOM/state variance  \n- Recommended next step: narrow URL eligibility to pages where the Create/New Job pattern is consistently available\n\n**2. Flows with Step Errors That Never Recovered**  \nI could not verify exact per-step **error-to-recovery failure rates** in this run because the available analytics did not expose a reliable `step_child_error` → `step_child_recovered` join by flow, step, and user. Using published flow error volume plus selector review, these are the top recovery risks:\n\n1. **Estimates cleanup post opt-in**  \n- Unrecovered error risk: **63,057** total errors; **5,252** users hit errors  \n- Most affected steps: the flow includes several fragile targets, especially the first estimate header tooltip and later positional selectors tied to MUI classes / nth-child paths  \n- Likely cause: responsive layouts and dynamic class structures are breaking tooltip attachment and click progression  \n- Recommended next step: audit every targeted selector in production, especially steps tied to positional DOM paths, and simplify any wait-for-click dependencies\n\n2. **Referral Tool Tip - Job Paid Dec25**  \n- Unrecovered error risk: **2,732** total errors; **1,968** users hit errors  \n- Most affected steps: the single tooltip step attached to **`h1`** on the jobs page  \n- Likely cause: generic header targeting plus event timing after **Job paid** makes this step easy to miss or fail  \n- Recommended next step: anchor the tooltip to a referral-specific UI element and confirm the trigger fires only after the destination page is ready\n\n3. **BF > CJ > Top nav > New button**  \n- Unrecovered error risk: **1,824** total errors; **1,725** users hit errors  \n- Most affected steps: the Create button step and the follow-on Job menu step, both of which wait for clicks on navigation controls  \n- Likely cause: navigation state, permissions, or menu rendering differences are likely interrupting step progression  \n- Recommended next step: validate the flow across permission sets and entry pages, then reduce exposure to only the navigation contexts that support both steps reliably\n\n**Next Steps & Offer**  \n- " <> ...,
        "outcomes" => ["activation", "engagement", "adoption"],
        "priority" => "high",
        "title" => "Housecall Pro flow health check: 3 published flows need attention",
        "type" => "issue"
      }
    ]
  },
  "notification_id" => "fe5cc057-ae3d-49df-933e-b895f2e510d1",
  "workflow_key" => "insight-issue-added"
}

Meta

%{"orig_scheduled_at" => 1777671373096988, "structured" => true}

Errors

Attempt 5—7h ago

** (Oban.PerformError) CustomerApi.Jobs.PublishNotificationJob failed with {:error, %Knock.Response{url: "https://api.knock.app/v1/workflows/insight-issue-added/trigger", body: %{"code" => "workflow_missing", "message" => "The workflow you specified was not found in this environment. Make sure you commit the workflow before trying to invoke it. See the docs: https://docs.knock.app/send-and-manage-data/environments", "status" => 404, "type" => "invalid_request_error"}, headers: [{"date", "Fri, 01 May 2026 21:37:48 GMT"}, {"content-type", "application/json; charset=utf-8"}, {"content-length", "278"}, {"connection", "keep-alive"}, {"access-control-allow-credentials", "true"}, {"access-control-allow-origin", "*"}, {"access-control-expose-headers", "authorization x-knock-user-token x-knock-environment"}, {"cache-control", "max-age=0, private, must-revalidate"}, {"x-content-type-options", "nosniff"}, {"x-frame-options", "SAMEORIGIN"}, {"x-request-id", "GKuOyCKf1FyKaoEDhiWm"}, {"x-xss-protection", "1; mode=block"}], status: 404}}

Attempt 4—7h ago

** (Oban.PerformError) CustomerApi.Jobs.PublishNotificationJob failed with {:error, %Knock.Response{url: "https://api.knock.app/v1/workflows/insight-issue-added/trigger", body: %{"code" => "workflow_missing", "message" => "The workflow you specified was not found in this environment. Make sure you commit the workflow before trying to invoke it. See the docs: https://docs.knock.app/send-and-manage-data/environments", "status" => 404, "type" => "invalid_request_error"}, headers: [{"date", "Fri, 01 May 2026 21:37:14 GMT"}, {"content-type", "application/json; charset=utf-8"}, {"content-length", "278"}, {"connection", "keep-alive"}, {"access-control-allow-credentials", "true"}, {"access-control-allow-origin", "*"}, {"access-control-expose-headers", "authorization x-knock-user-token x-knock-environment"}, {"cache-control", "max-age=0, private, must-revalidate"}, {"x-content-type-options", "nosniff"}, {"x-frame-options", "SAMEORIGIN"}, {"x-request-id", "GKuOwGjTtiXgp7EDOY-E"}, {"x-xss-protection", "1; mode=block"}], status: 404}}

Attempt 3—7h ago

** (Oban.PerformError) CustomerApi.Jobs.PublishNotificationJob failed with {:error, %Knock.Response{url: "https://api.knock.app/v1/workflows/insight-issue-added/trigger", body: %{"code" => "workflow_missing", "message" => "The workflow you specified was not found in this environment. Make sure you commit the workflow before trying to invoke it. See the docs: https://docs.knock.app/send-and-manage-data/environments", "status" => 404, "type" => "invalid_request_error"}, headers: [{"date", "Fri, 01 May 2026 21:36:51 GMT"}, {"content-type", "application/json; charset=utf-8"}, {"content-length", "278"}, {"connection", "keep-alive"}, {"access-control-allow-credentials", "true"}, {"access-control-allow-origin", "*"}, {"access-control-expose-headers", "authorization x-knock-user-token x-knock-environment"}, {"cache-control", "max-age=0, private, must-revalidate"}, {"x-content-type-options", "nosniff"}, {"x-frame-options", "SAMEORIGIN"}, {"x-request-id", "GKuOuwYRgYIENYkDYKUE"}, {"x-xss-protection", "1; mode=block"}], status: 404}}

Attempt 2—7h ago

** (Oban.PerformError) CustomerApi.Jobs.PublishNotificationJob failed with {:error, %Knock.Response{url: "https://api.knock.app/v1/workflows/insight-issue-added/trigger", body: %{"code" => "workflow_missing", "message" => "The workflow you specified was not found in this environment. Make sure you commit the workflow before trying to invoke it. See the docs: https://docs.knock.app/send-and-manage-data/environments", "status" => 404, "type" => "invalid_request_error"}, headers: [{"date", "Fri, 01 May 2026 21:36:30 GMT"}, {"content-type", "application/json; charset=utf-8"}, {"content-length", "278"}, {"connection", "keep-alive"}, {"access-control-allow-credentials", "true"}, {"access-control-allow-origin", "*"}, {"access-control-expose-headers", "authorization x-knock-user-token x-knock-environment"}, {"cache-control", "max-age=0, private, must-revalidate"}, {"x-content-type-options", "nosniff"}, {"x-frame-options", "SAMEORIGIN"}, {"x-request-id", "GKuOtiH6zzX5c1MDNabl"}, {"x-xss-protection", "1; mode=block"}], status: 404}}

Attempt 1—7h ago

** (Oban.PerformError) CustomerApi.Jobs.PublishNotificationJob failed with {:error, %Knock.Response{url: "https://api.knock.app/v1/workflows/insight-issue-added/trigger", body: %{"code" => "workflow_missing", "message" => "The workflow you specified was not found in this environment. Make sure you commit the workflow before trying to invoke it. See the docs: https://docs.knock.app/send-and-manage-data/environments", "status" => 404, "type" => "invalid_request_error"}, headers: [{"date", "Fri, 01 May 2026 21:36:13 GMT"}, {"content-type", "application/json; charset=utf-8"}, {"content-length", "278"}, {"connection", "keep-alive"}, {"access-control-allow-credentials", "true"}, {"access-control-allow-origin", "*"}, {"access-control-expose-headers", "authorization x-knock-user-token x-knock-environment"}, {"cache-control", "max-age=0, private, must-revalidate"}, {"x-content-type-options", "nosniff"}, {"x-frame-options", "SAMEORIGIN"}, {"x-request-id", "GKuOsgosUOzCJjYDNpHB"}, {"x-xss-protection", "1; mode=block"}], status: 404}}