Last updated 2026-04-27

Partner portal

This page describes what your resellers / partners see at /partners/*. They reach the portal via an invite email containing a magic link โ€” no password is set up for them.

Sign-in flow

  1. Partner contact receives an invite email the first time you add them as a contact (admin: /admin/partners/<id>/contacts/new). Link valid 7 days.
  2. They click โ†’ land at /partners/dashboard. A 30-day session cookie is set.
  3. After the first invite expires, they go to /partners/login, enter their email, and a fresh 30-minute sign-in link is sent. Same flow as the customer portal.

If they can't find the invite, resend from /admin/partners/<id> โ†’ contacts table โ†’ "Resend invite."

What each role sees

The dashboard, navigation, and per-page content are gated by the contact's role. See the admin help for the full role table.

The top nav shows: Dashboard ยท Deals ยท Performance ยท Commissions ยท Resources ยท Ask Otium ยท Questions ยท Training ยท Profile. Items they can't act on are still visible read-only or hidden depending on role.

Submitting a deal (salesperson, principal)

/partners/deals/new โ€” they fill in customer name, deal title, expected USD amount, optional close date, and free-text description. Submit creates a quote row with kind='partner_intent'. They see "Pending approval" in their portal until you decide.

Deals, performance and commissions

Deals has two views: the Overview (leads waiting, pending approval, pipeline, lost, won, not approved) and All deals โ€” one table with filters for status, stage, product, a customer search and date ranges, sortable columns, totals and a CSV download. Performance and the Dashboard have a period picker (this quarter, last quarter, year to date, last 12 months, all time, custom) showing win rate, average deal size, days to close and the open pipeline by stage. Commissions filters by close date and by whether the customer has paid, with a CSV. Everything is limited to the reseller's own deals.

Resources

/partners/resources groups the files shared with them by category (Price list, Brochures, Presentations, Case studies, Datasheets, Other) with search, a folder filter, View for PDFs and Download, and a new since your last visit badge; the price list is pinned at the top and on the dashboard. Your channel team decides which files each reseller and role sees, and resellers get one daily email when new files arrive. It lists every document_space marked visible to their partner_id with their role in the allowed-roles CSV. Downloads route through the same authenticated app/storage.py path that internal employees use โ€” full audit, no separate storage backend.

Ask Otium

/partners/ask โ€” type a question. AxSTREAM technical questions are answered from the AxSTREAM wiki with the pages linked (every role); principals and salespeople can also ask for sales advice on a situation. Prices, discounts, delivery and contract terms always come from the channel team. If an answer isn't enough, Send to the channel team turns it into a question under Questions. 50 questions per person per day.

Questions (every role)

/partners/questions/new โ€” submit subject + body, optionally link to a deal_id. Posts to partner_question table. Admins answer at /admin/partners/questions. Threading is single-level for v1 โ€” one question, one answer (admin can update the answer).

Training

/partners/training lists modules where required_for_role matches their role (or is both). Each module shows their cert status:

  • Not started โ€” no passed cert exists for this contact + module.
  • Certified โ€” passed cert exists. Expiry date shown if valid_for_days was set.

/partners/training/<id> shows the module description and the quiz. They submit; auto-grading writes a certification row. Pass = score โ‰ฅ module's pass_threshold (admin sets per-module, default 80%).

Footer

Every partner-portal page renders the tenant's brand (logo + primary color from company.brand_*), with a small "Powered by OtiumWork" footer link. Per-reseller white-label (where ABC Mexico shows their OWN brand instead of the tenant's) is a separate v2 build.

Limits / gotchas

  • Sessions are tied to one browser. Sign-in from a new device โ†’ another magic link.
  • The invite token in the URL is single-use. If they click twice, the second click hits "Link already used."
  • salesperson role currently sees ALL of their partner's deals, not just deals they personally submitted. Tighter per-contact scoping is a follow-up.
  • Deal collisions (two partners registering the same end-customer) currently surface only at admin review time โ€” no automatic territory rules in v1.

See something wrong or outdated in this article? Report it โ†’