Skip to main content
You are a paralegal at a mid-sized IP firm responsible for docketing renewal deadlines across 200+ client marks in 12 jurisdictions. Missing a deadline means losing rights — and potentially a malpractice claim. You need a system that surfaces every upcoming deadline with enough lead time to prepare filings. This guide walks through building a renewal management workflow with the Signa API.

Prerequisites

  • A Signa API key with trademarks:read and portfolios:manage scopes
  • One or more portfolios populated with client marks (see Portfolio Monitoring)

1

Understand deadline types by jurisdiction

Not every jurisdiction has the same deadline structure. The Signa API computes deadlines based on jurisdiction-specific rule sets (rules defined for 21 jurisdictions). Start by reviewing the rules for your key jurisdictions.
# Get deadline rules for the US
curl https://api.signa.so/v1/jurisdictions/US/deadline-rules \
  -H "Authorization: Bearer $SIGNA_API_KEY"

# Get deadline rules for the EU
curl https://api.signa.so/v1/jurisdictions/EU/deadline-rules \
  -H "Authorization: Bearer $SIGNA_API_KEY"
Key differences across jurisdictions:
JurisdictionRenewal PeriodGrace PeriodSpecial Requirements
US10 years6 monthsSection 8 (use), Section 15 (incontestability), combined 8+9 at renewal
EU10 years6 monthsSimple renewal only
GB10 years6 monthsSimple renewal + restoration period (6 months post-grace)
DE10 years6 monthsDPMA end-of-month rule (due date = last day of expiry month)
CA15 years (pre-2019: 15 years, post-2019: 10 years)6 monthsLegacy 15-year marks transitioning to 10-year cycle
US marks have the most complex deadline structure. In addition to renewal, you must file a Section 8 Declaration of Use between years 5-6 after registration, and optionally a Section 15 Declaration of Incontestability at year 5. Missing the Section 8 results in cancellation, even if the mark is in active use.
2

Query all deadlines for the next 18 months

Pull every deadline across a portfolio, sorted by due date. The due_before parameter sets the horizon.
curl "https://api.signa.so/v1/portfolios/ptf_clients01/deadlines?due_before=2027-09-24&limit=100" \
  -H "Authorization: Bearer $SIGNA_API_KEY"
Expected output:
{
  "object": "list",
  "data": [
    {
      "trademark_id": "tm_abc001",
      "mark_text": "BRIGHTWAVE",
      "office_code": "uspto",
      "type": "declaration_of_use",
      "due_date": "2026-08-14",
      "grace_expiry": "2027-02-14",
      "window_opens": "2025-08-14",
      "jurisdiction_code": "US"
    },
    {
      "trademark_id": "tm_def002",
      "mark_text": "MERIDIAN",
      "office_code": "euipo",
      "type": "renewal",
      "due_date": "2026-11-30",
      "grace_expiry": "2027-05-31",
      "window_opens": "2025-11-30",
      "jurisdiction_code": "EU"
    }
  ]
}
3

Categorize deadlines by urgency

Use the window_opens and grace_expiry dates to build an urgency triage:
const today = new Date().toISOString().slice(0, 10);

interface Deadline {
  trademark_id: string;
  mark_text: string;
  office_code: string;
  type: string;
  due_date: string;
  grace_expiry: string | null;
  window_opens: string;
  jurisdiction_code: string;
}

function categorize(d: Deadline): "overdue" | "grace_period" | "due_soon" | "window_open" | "upcoming" {
  if (d.due_date < today && d.grace_expiry && d.grace_expiry >= today) return "grace_period";
  if (d.due_date < today) return "overdue";

  const daysUntilDue = Math.ceil(
    (new Date(d.due_date).getTime() - Date.now()) / (1000 * 60 * 60 * 24),
  );

  if (daysUntilDue <= 30) return "due_soon";
  if (d.window_opens <= today) return "window_open";
  return "upcoming";
}

const categorized = {
  overdue: [] as Deadline[],
  grace_period: [] as Deadline[],
  due_soon: [] as Deadline[],
  window_open: [] as Deadline[],
  upcoming: [] as Deadline[],
};

for (const d of deadlines.data) {
  const category = categorize(d);
  categorized[category].push(d);
}

console.log(`OVERDUE (past grace): ${categorized.overdue.length}`);
console.log(`IN GRACE PERIOD: ${categorized.grace_period.length}`);
console.log(`DUE WITHIN 30 DAYS: ${categorized.due_soon.length}`);
console.log(`WINDOW OPEN (can file now): ${categorized.window_open.length}`);
console.log(`UPCOMING: ${categorized.upcoming.length}`);
PriorityCategoryAction required
P0Overdue (past grace)Rights likely lost. Consult counsel immediately.
P1Grace periodFile immediately. Late fees apply.
P2Due within 30 daysPrepare and file.
P3Window openCan file early. Schedule for next batch.
P4UpcomingNo action needed yet.
4

Handle US-specific Section 8 and Section 15 declarations

US marks require more than simple renewal. Pull the detail for each US mark to identify which declarations are needed.
# Get full detail including all computed deadlines
curl https://api.signa.so/v1/trademarks/tm_abc001 \
  -H "Authorization: Bearer $SIGNA_API_KEY"
US Declaration timeline for a mark registered on 2021-01-20:
Registration ──────────────────────────────────────────────> Time
     |                                                    |
     v                                                    v
  2021-01-20                                        2031-01-20

  Year 5 (2026-01-20):  Section 15 window opens (optional)
  Year 5 (2026-01-20):  Section 8 window opens
  Year 6 (2027-01-20):  Section 8 DUE (+ 6-month grace)
  Year 10 (2031-01-20): Combined Section 8 + 9 DUE (+ 6-month grace)
Section 15 (incontestability) is optional but highly valuable. It eliminates most grounds for cancellation. The window opens at year 5 and remains open indefinitely — but the mark must have been in continuous use for 5 consecutive years with no pending proceedings.
5

Set up deadline watches with advance alerts

Create a status watch on your portfolio that will alert you when marks approach deadline windows.
curl -X POST https://api.signa.so/v1/watches \
  -H "Authorization: Bearer $SIGNA_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: watch-renewals-clients01" \
  -d '{
    "name": "Client renewals & declarations",
    "watch_type": "portfolio",
    "criteria": { "portfolio_id": "ptf_clients01" },
    "triggers": ["status_change", "any_change"],
    "delivery_channels": ["api"],
    "metadata": { "alert_type": "deadline", "team": "docketing" }
  }'
6

Export iCal calendar feed

Subscribe your docketing team to a live calendar feed. Each deadline becomes a calendar event with configurable reminders.
# Download the iCal feed with reminders at 120, 90, 60, 30, and 7 days
curl "https://api.signa.so/v1/portfolios/ptf_clients01/deadlines.ics?reminder_days=120,90,60,30,7" \
  -H "Authorization: Bearer $SIGNA_API_KEY" \
  -o client-deadlines.ics
For law firms managing multiple client portfolios, create a separate iCal feed per portfolio. Each client’s team subscribes to their own feed, keeping deadlines compartmentalized.

Grace period reference

JurisdictionGrace PeriodLate FeeNotes
US6 monthsYesApplies to renewals and Section 8
EU6 monthsYesSurcharge applies
GB6 months + 6 months restorationYesTwo-stage: grace then restoration
DE6 monthsYesDPMA end-of-month rule applies
CA6 monthsYes
CH6 monthsYes
FR6 monthsYes
WIPO (Madrid)6 monthsYesPer designation
AU6 monthsYes
MX6 monthsYesPost-anniversary window

What’s next

Portfolio Monitoring

Set up comprehensive portfolio management beyond just renewals.

Class Coverage Audits

Check whether your clients’ Nice class coverage has gaps before renewal.

Opposition Tracking

Monitor proceedings that could affect the renewability of contested marks.