ChatGPTWorkInbox & emailAI score · PendingAI-assisted edit · no obvious prompt-injection riskn8n.io

Track Asset Warranty Deadlines with Google Sheets, Gmail, Todoist, Slack, and OpenAI

Google Sheets asset register → compute warranty days remaining → route by urgency to Slack / Todoist / Gmail alerts, with OpenAI drafting renewal negotiation emails for high-value assets

Some experienceStepsWorkflowPromptTip
Who
Ops or admin staff managing device and license warranty deadlines
You get
Daily automated scan of asset register with tiered escalations and AI-drafted vendor negotiation emails for expensive items
You need
n8n · google-sheets · gmail · slack · todoist

Constraints

Requires an n8n instance; API credentials for Google Sheets, Gmail, Slack, Todoist, and OpenAI; a Google Sheet with columns asset, owner_email, purchase_date, warranty_months, vendor, value, status. Runs automatically at 08:30 daily.

What they did

Author kii published an n8n official template that tracks asset warranty deadlines. The workflow reads an asset register from Google Sheets daily at 08:30, computes each item's warranty expiry and days remaining, then routes items through a three-tier escalation: expired items are updated to 'warranty expired' in the sheet; items expiring within 7 days trigger a Slack alert and Todoist task; items expiring within 30 days prompt the owner via Gmail to choose EXTEND, REPLACE, or LAPSE. For high-value assets (value >= 2000), an additional gpt-4o-mini call drafts a vendor negotiation email saved as a Gmail draft for human review.

How it went

No runtime metrics or ROI data provided by the author. The template description states 'A single missed warranty claim on one broken laptop usually costs more than a year of running this workflow' without supporting statistics. (author_report, not verified by this site)

Worth knowing

High-value threshold defaults to 2000 and can be adjusted in the High-Value Asset? node; negotiation emails are saved as drafts, not sent automatically, requiring human review; the LLM uses gpt-4o-mini and can be changed in the OpenAI Chat Model node; assets already marked 'warranty expired' are filtered and not reprocessed; asset column must be unique or updates may target wrong rows; reproduction=not_tested, not verified by this site.

n8n workflow template

Structure checked · Not run-tested

Use “Import from File” in n8n, or copy the JSON and paste it into the editor. Connect your own accounts, then try test data. The template is inactive by default.

Setup and test checklist

Credentials to connect

  • After import, connect your own credentials on auth-required nodes; author secrets are not included.

Configuration to replace

  • Source template is n8n public workflow #16947 (~16 nodes). Keep inactive after import; verify triggers, expressions and external API endpoints.
  • Sticky-note guidance is informational; replace placeholders with your own accounts, sheet schemas or channel IDs.

Test input and expected output

  • Manually run the main path once in a test workspace and confirm credentialed nodes authenticate without errors.
  • Drive one synthetic/redacted sample through and check output fields and downstream writes before enabling in production.

Template changes

  • Author credential bindings, webhookId and execution data are removed; the workflow is inactive. Nodes, connections and original prompts are preserved. Not run-tested in n8n.
  • No business-logic edits; verify keys, quotas and privacy compliance before use.

Template retrieved: 2026-10-25

Steps

  1. Create the asset register

    Create a Google Sheet with columns: asset, owner_email, purchase_date, warranty_months, vendor, value, status. Populate with existing asset data; leave status blank or set to current state.

  2. Connect credentials and select spreadsheet

    In n8n, add credentials for Google Sheets, Gmail, Slack, Todoist, and OpenAI (Chat Model). In both the Read Asset Register and Mark As Expired nodes, select the correct Google Sheets document and sheet, and confirm the asset column works as a unique matching key for updates. Set the Slack channel (e.g., #it-assets) and choose the Todoist project. Adjust the high-value threshold in the High-Value Asset? node if needed (default: 2000).

    Setup guidance · Editorial suggestion。Setup assistant checklist; confirm then activate workflow

    Please confirm the following before activating:
    - Google Sheet has columns: asset, owner_email, purchase_date, warranty_months, vendor, value, status
    - Credentials added: Google Sheets, Gmail, Slack, Todoist, OpenAI Chat Model
    - Read Asset Register and Mark As Expired nodes point to the same document and sheet
    - asset column is a unique key
    - Slack channel and Todoist project are specified
    - High-value threshold adjusted as needed (default 2000)
  3. Compute days left

    After the daily 08:30 trigger, the workflow reads all assets from Google Sheets. The Compute Days Left node uses JavaScript to calculate: expiryDate = purchase_date + warranty_months; daysLeft = days from today to expiry. Records with status 'warranty expired' are filtered out.

    Execution prompt · Source text。Compute Days Left node JS Code field

    // Expiry date = purchase_date + warranty_months; compute days left for each asset
    const today = new Date();
    today.setHours(0, 0, 0, 0);
    
    return $input.all()
      .map(item => {
        const row = item.json;
        const purchase = new Date(row.purchase_date);
        const months = Number(row.warranty_months) || 0;
        const expiry = new Date(purchase);
        expiry.setMonth(expiry.getMonth() + months);
        const daysLeft = Math.floor((expiry - today) / 864e5);
    
        return {
          json: {
            ...row,
            value: Number(row.value) || 0,
            expiryDate: expiry.toISOString().slice(0, 10),
            daysLeft: isNaN(daysLeft) ? null : daysLeft
          }
        };
      })
      .filter(item => item.json.daysLeft !== null && item.json.status !== 'warranty expired');
  4. Route by urgency

    The Route By Urgency (Switch) node branches by daysLeft: < 0 to Expired, 0–7 to 7 Days, 8–30 to 30 Days. Assets with more than 30 days remaining exit without further action.

    Execution prompt · Editorial suggestion。Route By Urgency node Rules configuration

    Switch node with three rules:
    1. Expired: daysLeft < 0
    2. 7 Days: daysLeft <= 7
    3. 30 Days: daysLeft <= 30
  5. Urgent alert: Slack + Todoist

    For assets expiring within 7 days, post an urgent message to the configured Slack channel with asset name, vendor, expiry date, and owner. Then create a Todoist task due on the warranty expiry date, with a description reminding to check asset condition and file claims before expiry.

    Execution prompt · Source text。Urgent Slack Alert node Text field

    =*Warranty expires in {{ $json.daysLeft }} day(s)!*
    
    • Asset: *{{ $json.asset }}* (value: {{ $json.value }})
    • Vendor: {{ $json.vendor }}
    • Expiry: {{ $json.expiryDate }}
    • Owner: {{ $json.owner_email }}
    
    Last chance to file claims or extend — a Todoist task with the deadline was just created.

    Execution prompt · Source text。Create Deadline Task node Content field

    =Warranty deadline: {{ $json.asset }} ({{ $json.vendor }}) expires {{ $json.expiryDate }}
  6. Warning email: ask owner to decide

    For assets expiring within 30 days, send a Gmail message to owner_email stating the warranty is about to expire and asking them to reply with EXTEND, REPLACE, or LAPSE. The email includes asset details, vendor, expiry date, and book value.

    Execution prompt · Source text。Owner Decision Email node Message field

    =Hi,
    
    The warranty for an asset you own expires in <b>{{ $json.daysLeft }} days</b>:
    
    <ul><li>Asset: <b>{{ $json.asset }}</b></li><li>Vendor: {{ $json.vendor }}</li><li>Expiry: {{ $json.expiryDate }}</li><li>Book value: {{ $json.value }}</li></ul>
    
    Please decide this week and reply with one of:
    <b>EXTEND</b> (we'll contact the vendor) · <b>REPLACE</b> (we'll start procurement) · <b>LAPSE</b> (asset is fine to run without warranty)
    
    Thanks!
    Asset Guardian 🤖
  7. High-value asset: AI drafts renewal negotiation email

    For 30-day warnings where value >= 2000, the High-Value Asset? (IF) node passes matching items to the Draft Negotiation Email (LLM Chain) node, which calls gpt-4o-mini to draft a vendor warranty-extension negotiation email. Requirements: max 160 words, plain text, professional but warm; ask for extension quote and mention comparing against replacement; ask for multi-year pricing; leave [NAME] placeholders. The result is saved as a Gmail draft for human review before sending.

    Execution prompt · Source text。Draft Negotiation Email node Text field (LLM Chain user prompt)

    =Draft a warranty-extension negotiation email to a vendor.
    
    Context:
    - Asset: {{ $json.asset }}
    - Vendor: {{ $json.vendor }}
    - Current warranty ends: {{ $json.expiryDate }}
    - Asset book value: {{ $json.value }}
    
    Rules:
    - Max 160 words, plain text, professional but warm
    - Ask for an extension quote AND mention we're comparing against replacing the asset (real leverage, no bluffing)
    - Ask for multi-year pricing options
    - Leave [NAME] placeholders for the sender's signature
    
    Return only the email body.

    Execution prompt · Source text。Draft Negotiation Email node System Message field

    You are a procurement specialist who writes short, effective vendor negotiation emails.

Prompt you can copy

Setup guidance · Editorial suggestion。Hand to setup assistant to confirm inputs and permissions before configuring nodes

This block is the prompt. Ads are never placed here.

Set up and activate this n8n workflow:
1. Prepare a Google Sheet with columns: asset, owner_email, purchase_date, warranty_months, vendor, value, status
2. Add n8n credentials for Google Sheets, Gmail, Slack, Todoist, and OpenAI
3. Select the spreadsheet and confirm asset column is a unique key
4. Set Slack channel and Todoist project
5. Adjust high-value threshold if needed (default 2000)
6. Activate; runs daily at 08:30

After setup, test with sample data across all branches: expired update, 7-day Slack+Todoist, 30-day email, high-value negotiation draft.

Complete credentials and spreadsheet setup first, then run test data through all branches before going live.

Source

Track asset warranty deadlines with Google Sheets, Gmail, Todoist, Slack, and OpenAI · kii · n8n.io · 2026-07-09

Comments & feedback

Tried this method? Share results, problems or improvements. Comments appear after moderation. Please avoid sensitive information.

Loading…

    Related