Skip to content
PokutsoftPokutsoft
GlobalMarketing
Influencer & Affiliate icon

Influencer & Affiliate

Affiliate & influencer marketing: tracking links + /aff redirect, click/conversion attribution, commission-rule engine, native payouts (vendor bills), self-service affiliate portal and performance funnel.

Odoo 20.0Odoo 19.0Odoo 18.0
Compatible with Odoo 18.0 · 19.0 · 20.0
OPL-1 license · Community & Enterprise
Influencer & Affiliate for Odoo — preview banner

Influencer & Affiliate

Trackable links with /aff redirect, click and conversion attribution, a commission-rule engine, native payouts via vendor bills, and a self-service affiliate portal

A complete affiliate and influencer marketing platform for Odoo. Generate trackable short links, record every click (referrer, UTM, hashed IP), attribute conversions to sales orders, compute commissions with a flexible product / category / tier rule engine, pay affiliates through native Odoo vendor bills, and give every affiliate a portal to watch their clicks, conversions, EPC and earnings.

What is new in 1.4.0

Released 2026-09-18 · Odoo 18.0, 19.0 and 20.0 · nothing to do before updating

Fixed

  • A rule below its minimum now falls back instead of paying nothing. A rule such as “25% on widgets, minimum 500” matched a 100 line, found it under the minimum and returned zero — and zero was the answer, because the fall-back to the affiliate’s own rate only ran when no rule matched at all. A rule below its minimum is now passed over, so the next most specific rule applies, or the affiliate’s default rate does. Affiliates selling below a rule’s minimum start earning their default rate on those lines.
  • A multi-line credit note no longer claws back twice. Where one credit-note line covered two sale order lines — a down payment, a re-invoicing, most data imports — the credited amount was counted once per sale line, so a 100 credit against a 200 order took the whole commission back instead of half. Each line is now split in proportion, and each order’s share converted into that order’s currency. Resetting a posted credit note to draft, or cancelling it, now gives the commission back too.
  • Campaign spend, campaign sales and the commission pivot now convert. Campaign Spent, Total Sales and therefore ROI summed commissions in whatever currency each was recorded in and printed the result with the campaign’s symbol. They now convert, at the rate in force when each commission was earned. Two new stored columns, Commission (Company Currency) and Sale (Company Currency), are what the list total and the pivot measures use, because a pivot sums the stored column and converts nothing.
  • A commission tier no longer moves when an exchange rate is published. The tier threshold was converted at today’s rate, so an affiliate who had made no new sales could drop out of their tier because somebody imported a rate. The comparison now happens in the tier’s own currency, with each sale converted at the rate in force when it happened. Cancelled commissions now also leave “earned” and “total sales”, which they already left “pending payout”.
  • Payouts: who may be paid, how much, and when it is final. A blacklisted affiliate can no longer have a payout raised, by button, by the weekly job or from the portal. The vendor bill’s total is now the payout’s total — a new Commission Taxes field on the affiliate decides the tax explicitly instead of the chart of accounts deciding it, and it is empty by default. Requesting an already approved payout and rejecting a paid one are both refused, a rejected payout reads zero, and one affiliate failing no longer stops the whole weekly run.
  • An affiliate can no longer earn on their own purchase — neither through their own contact nor through their own portal login.
  • Each company sees only its own data. Eight models carry a company and none of them was scoped, so every employee of every company could read every other company’s affiliates, commissions and payouts. Rows with no company set stay visible to everybody, so nothing disappears from your screens.

Changed

  • A refresh loop no longer counts as many clicks. Repeat requests for the same link, from the same visitor, within 30 minutes are one click. Because EPC is earnings divided by clicks, removing duplicates raises EPC rather than lowering it — earnings do not move, the divisor does. Set influencer_affiliate_mgmt.click_dedup_window_minutes to 0 for the old behaviour.
  • The order now records which click it came from. A third cookie names the click and the sale order stores it, so the click marked converted is the one the buyer actually made rather than the affiliate’s most recent unconverted click. The fall-back search now looks back 30 days instead of forever.
  • The attribution cookie is read for visitors, not for staff. An order typed in the back office by somebody carrying an /aff cookie from their own browsing is no longer attributed to that affiliate. Typing an affiliate code by hand is unaffected, and the attribution fields are now tracked on the chatter and locked once the order leaves draft.
  • One source decides where a link may send a visitor. The redirect guard resolves this host from web.base.url alone — the same source the check that runs when you save a link uses — so whatever you can save is what gets served. Other hosts are named in influencer_affiliate_mgmt.allowed_redirect_hosts, as before. The update lists every active link this database will no longer redirect to.
  • The portal’s tracking links have a Copy button, on the dashboard, on each row of the links list and on the link detail page.
  • Smaller things: an unknown affiliate code now answers 302 like every other branch of the route; referrer and UTM values from a public request are capped as the user agent already was; the ip_hash column is indexed for click de-duplication; the weekly payout job names its scheduler user explicitly.

Compatibility

This update rewrites stored figures. Two formula changes above mean the stored affiliate performance and funnel columns no longer match how they are computed, so the update recomputes all of them and populates the two new company-currency columns. Nothing already approved, billed or paid is rewritten — no commission amount, no payout amount, no vendor bill. Every step is individually guarded, so if one cannot complete it is logged in full and the update itself continues and succeeds. Odoo 18.0, 19.0 and 20.0, Community and Enterprise.

What to check on your own database

  1. Your affiliate figures have been recomputed. Clicks, conversions, conversion rate, EPC, total sales, total commissions and pending payout are rewritten from the current formulas during this update, and the log says how many records moved. Click counts fall and EPC rises where visitors were refreshing; totals change where an affiliate has cancelled commissions.
  2. The update log’s redirect check. It names every active link whose destination this database will no longer serve, with the system parameter that fixes it. Nothing is changed for you.
  3. Affiliates you have marked inactive stop earning on new orders from this release; inactive now means the same as blacklisted for new commissions. Earnings already recorded are untouched.
  4. Your commission taxes. The vendor bill line now carries exactly the taxes named in Commission Taxes on the affiliate, and nothing by default. If your chart of accounts was applying a purchase tax to these bills, set it there.
  5. If you correct or add a historical exchange rate afterwards, re-run env['influencer.commission']._repair_company_currency_amounts() from Settings > Technical, so the two new company-currency columns follow it. A stored figure cannot depend on a rate table on its own.

Key Features

Tracking Links & /aff Redirect

Every affiliate gets a short trackable URL. A public /aff/<code> controller records the click (referrer, UTM, hashed IP, user agent), drops an attribution cookie and redirects to the destination with UTM injected.

Conversion Attribution

Sale orders capture the affiliate code / link from the cookie at checkout. On confirmation the originating click is marked converted and tied to the order and commission, powering the click to conversion funnel.

Commission Rule Engine

Percentage or fixed rules scoped by affiliate, campaign, product or category, with minimum amounts and priority. The most specific rule wins and commissions are computed per order line, falling back to the affiliate rate or tier.

Native Payouts (Vendor Bills)

Payouts gather unpaid commissions past the affiliate threshold, follow a draft to requested to approved to paid workflow, and create a real vendor bill (account.move) in standard Odoo accounting. No external SDK required.

Self-Service Affiliate Portal

Affiliates log in to /my/affiliate to see clicks, conversions, conversion rate, EPC, earnings and pending payout, browse their links and commissions, copy their tracking link and request a payout in one click.

Performance, Security & i18n

EPC and funnel metrics per affiliate, commission pivot and click graph. Dedicated user / manager groups, per model ACLs and portal record rules scope affiliates to their own data. Fully translated into Turkish, with a 294-term translation template shipped so any language can be added.

Why Choose This Module

Run a real affiliate program inside Odoo without stitching together external tools. Trackable links and the /aff redirect capture every click, conversions attach automatically to sales orders, the rule engine computes accurate commissions per product or category, and payouts settle through native vendor bills you already reconcile. Affiliates self-serve their own dashboard, so your team manages the program instead of chasing spreadsheets.

Specifications

  • Compatible: Odoo 18.0 / 19.0 / 20.0
  • License: OPL-1
  • Languages: English, Turkish (translation template included)
  • Author: Pokutsoft
  • Dependencies: base, sale, account, website, mail, portal, product
  • Support: support@pokutsoft.com

Screenshots

Campaigns

Campaigns

Campaigns Detail

Campaigns Detail

Commissions

Commissions

Commissions Detail

Commissions Detail

Content

Content

Content Detail

Content Detail

Influencers

Influencers

Influencers Detail

Influencers Detail

Update date: 2026-10-01

User guides (PDF)

Related modules