WindoorERP Documentation 19.0

Configure scheduled actions, email templates, SMS logs, and Discuss infrastructure

14 min read Updated 2026-08-30 WindoorERP 19.0
This article is step 3 of 6 in 14- Administer and Secure WindoorERP

What this does

Settings › Technical is where an administrator watches and adjusts the machinery that runs behind every WindoorERP screen: the Scheduled Actions that post mail queues and sync data on a timer, the Email Templates behind every automatic message, the per-recipient Notifications log that answers "why did she not get it", the SMS log and blacklists, the Discuss (internal chat) plumbing, activity types and plans, and digest emails. This article covers those surfaces; the mail servers themselves have their own articles.

See also

How mail actually enters and leaves the database — outgoing and incoming servers, aliases and the catchall — is covered in Understand how WindoorERP sends and receives email, Send outgoing email from the database and Fix an email that did not arrive.

Before you start

  • You need administrator access and developer mode — the whole Technical menu is hidden until developer mode is active.
  • These screens change live system behaviour. Deactivating a scheduled action or editing a template affects every user immediately.
  • There is no Automation Rules menu and no live chat on WindoorERP — the Automation section holds exactly Scheduled Actions and Scheduled Actions Triggers, and the Discuss menus serve internal chat, not a website chat widget.

Steps

  1. 01
    Open Settings › Technical › Automation › Scheduled Actions to see every background job, its model, its next run and whether it is active.
  2. 02
    Open a job and press Run Manually to execute it now instead of waiting for its schedule — the usual reason is "the mail queue runs hourly and I want this quotation out now".
  3. 03
    Open Settings › Technical › Email › Email Templates to adjust the wording of an automatic message; use Preview to render it against a real record before saving.
  4. 04
    When someone says a message never reached them, open Settings › Technical › Discuss › Notifications and read the Status and Failure type of their row.
  5. 05
    Manage opted-out recipients under Phone / SMS › Phone Blacklist and Discuss › Email Blacklist.
  6. 06
    Under Email › Digest Emails, open a digest and press Subscribe to receive the periodic KPI summary yourself.

Scheduled actions — the background heartbeat

Every recurring job in WindoorERP is a record here: mail queues, auto-vacuum, follow-up processing, digest sending, plus the WindoorERP-specific jobs your modules add. The list shows each job's Priority (0 runs first, 10 last), Action Name, Model, Next Execution Date, interval and Active flag; a calendar view of the same action plots jobs by their next run.

The Scheduled Actions list: priority, action name, model, next execution date, interval and active flag for every background job in the database

The form is compact:

FieldWhat it does
ModelThe model the job's code runs against — the code reaches it as model.
Scheduler UserThe job runs with this user's permissions. Most shipped jobs run as OdooBot.
Execute EveryThe repeat interval: a number plus Minutes, Hours, Days, Weeks or Months. The number must be strictly positive.
ActiveOff means the job never runs — several jobs ship deactivated on purpose and wait for you to switch them on.
Next Execution DateWhen the scheduler will next pick the job up. The Last Execution Date of the last successful run is also stored on the record.
PriorityOrder among jobs due at the same moment: 0 is highest, 10 lowest, 5 the default.
Code / Help / Usage tabsThe Python the job executes, and its documentation.

A scheduled action form: model, scheduler user, interval, next execution date and priority above the Code tab, with the Run Manually button in the header

Run Manually executes the job immediately, in your session, exactly as the scheduler would. If a server worker is executing the same job at that moment you are refused with "Job '…' already executing" — and for the same reason a running job briefly refuses edits with "Record cannot be modified right now". Errors the job raises are shown to you in a dialog instead of disappearing into the log.

Failures are tracked per job: a Failure Count and First Failure Date are stamped on every consecutive failed run and reset by any successful one. A job is deactivated automatically only when it has failed five or more times and its first failure is more than seven days old — administrators are then notified in Discuss: "Cron job … has been deactivated after failing … times. More information can be found in the server logs …". A job that times out three consecutive times counts as failed.

The Scheduled Actions Triggers menu lists one-off wake-ups that make a job run before its Next Execution Date — features like "send now" create them internally. They are consumed when the job starts; you never create them by hand.

Jobs worth knowing on a WindoorERP database: Mail: Email Queue Manager (hourly — this is why an email can legitimately sit "in queue" for up to an hour), Mail: Fetchmail Service (every 5 minutes once an incoming server is configured; it ships deactivated), Mail: Post scheduled messages (daily, posts chatter messages queued with Send Later), Digest Emails (daily), Base: Auto-vacuum internal data (daily housekeeping), and the WindoorERP jobs such as Manual: process export jobs. Deactivated rows like CRM: Lead Assignment or automatic invoicing: send ready invoice are features waiting to be enabled, not faults.

Email templates

Every automatic email — quotation sent, portal invitation, rating request — is rendered from a mail.template record here, so this screen is where you change the wording your customers see. The Body tab is a normal editor; type /field inside it (or {{ … }} in the Subject) to insert a placeholder filled from the record at send time.

An email template form on its Body tab, with placeholder chips in the text and the Preview and Reset Template buttons in the header

FieldWhat it does
Template Name / Applies toThe template's name and the model whose records it renders against.
SubjectSupports inline placeholders — the form's own example is Nice to meet you, {{ object.name }}.
Body tabThe message HTML with dynamic placeholders.
Options tabAddressing and delivery: Send From, To (Emails), To (Partners), Cc, Reply To, Default Recipients, Language, Outgoing Mail Server (empty = by server priority), Scheduled Send Date, Auto Delete, static Attachments and Dynamic Reports — PDF reports rendered per record and attached at send time.

Preview renders the template against a record you pick (it preselects the model's first record) in any installed language; a broken placeholder shows its error inside the preview window rather than crashing. Reset Template restores a shipped template to its factory content. Add Context Action puts the template in the ⚙ actions menu of its model so users can send it from any list or form; Remove Context Action takes it out again. Two guards to know: a template cannot be saved on an abstract model ("You may not define a template on an abstract model"), and saving test-renders the dynamic fields — a broken expression is refused with "Oops! We couldn't save your template due to an issue" and the error detail.

When a message does not arrive — the Notifications log

Discuss › Messages stores every chatter post, email and comment in the database; Discuss › Notifications stores one row per recipient per message, and that row is where delivery questions are settled. Each row carries the Notification Type (Inbox, Email, SMS, Snailmail), the Status ladder — Ready to Send, Processing, Sent, Delivered, Bounced, Exception, Cancelled — and on failure a precise Failure type: Invalid email address, Connection failed (outgoing mail server problem), Blacklisted Address, Duplicated Email, the SMS failures, and more.

The Notifications list: one row per recipient with notification type, recipient and failure type — here email rows failing with a connection error and an SMS row failing with Unregistered Account

Read the ladder carefully: Sent means WindoorERP handed the message to the mail server; Delivered means delivery was confirmed. A recipient complaining about a message whose row says Sent has a mailbox or spam problem, not a WindoorERP problem. Rows older than six months are purged by the Notification: Delete Notifications older than 6 Months job.

Two configurable models live beside these logs. Subtypes define the events a follower can subscribe to on each model; Default means new followers get that event automatically, and Internal Only means portal followers never receive it — the switch to check when a customer is getting chatter noise they should not see. Followers lists who follows which document and which subtypes they receive.

SMS — log, templates, blacklist, and the sending truth

SMS in WindoorERP is sent exclusively through the Odoo IAP service — there is no SMS gateway to configure, no provider screen, no SMSC host. Sending requires an IAP account registered for SMS with purchased credits; on a fresh WindoorERP database none exists, so an attempted SMS fails with Unregistered Account or Insufficient Credit. Treat these menus as the inspection surface they are.

Phone / SMS › SMS is the outbound log: number, customer, body, and an SMS Status of In Queue, Processing, Sent, Delivered, Error or Cancelled, with a Failure Type naming the cause — Missing Number, Wrong Number Format, Country Not Supported, Insufficient Credit, Unregistered Account, Blacklisted, Duplicate, Opted Out. The queue is drained by the SMS: SMS Queue Manager job. SMS Templates mirror email templates in plain text, with the same placeholders and the same context-action buttons.

The SMS log on a database with no registered IAP account: one message in Error with failure type Unregistered Account, and per-row Retry and Cancel buttons

Phone Blacklist holds numbers that must never be texted — added by an unsubscribe link or by hand. Every number is validated and normalised to international +974… format on save; a number that cannot be parsed is refused with "… Please correct the number and try again.". The email equivalent is Discuss › Email Blacklist, which refuses non-addresses with "Invalid email address" — blacklisted recipients then fail with the Blacklisted Address / Blacklisted failure types rather than being silently skipped.

The rest of the Discuss menus

The remaining Discuss entries are logs and per-user preferences you will mostly read, not edit:

MenuWhat it holds
Tracking ValuesThe audit trail behind every "field: old ➜ new" chatter line, kept even after a field is uninstalled.
RatingsCustomer satisfaction answers (list, kanban, pivot, graph) collected by rating emails.
User SettingsPer-user Discuss preferences: sidebar state, push-to-talk key, voice duration, notification choices.
Scheduled MessagesThe chatter Send Later queue, posted by its daily job.
RTC sessionsDiscuss voice/video calls in progress right now — normally empty.
ICE ServersOptional STUN/TURN servers for Discuss calls (see below).
Link PreviewsThe cached URL cards shown under chat messages.
Message ReactionsEvery emoji reaction, with who reacted.
GuestsPeople who joined a Discuss channel or call from an invite link without logging in.
GIF favoritePer-user GIF bookmarks.

On ICE Servers, the screen's own guidance is the whole story: "Use your own servers for calls to manage heavy traffic and ensure reliability if Twilio is unavailable." Each record is a stun: or turn: URI with optional credentials; only the first five are used. With none configured, Discuss calls still work on ordinary networks but can fail across strict firewalls.

Activities: types and plans

Activities › Activity Types defines the to-do vocabulary offered on every chatter — each type sets its default summary, its due-date offset (Schedule, counted from the previous activity's completion or deadline), and an Action that hooks special behaviour: Upload Document asks for a file when marking done, Meeting opens the calendar flow. Chaining Type decides what happens when the activity is done: Suggest Next Activity offers the follow-ups you list, Trigger Next Activity schedules one automatically. A type can be limited to one model or usable everywhere.

The Activity Types list with each type's default summary, scheduling offset and model — including WindoorERP-specific types like WhatsApp Follow-up and Certifications

Activity Plans bundle several activity templates into one checklist — one click on a record schedules the whole sequence, each step with its own type, assignee rule and delay. Activity Overview lists every scheduled activity across all models with its state: overdue, today or planned.

Digest emails

Email › Digest Emails sends recipients a periodic KPI summary — connected users, messages sent, revenue, new leads, opportunities won, open tasks — at a Periodicity of daily, weekly, monthly or quarterly. Any internal user can press Subscribe / Unsubscribe on the form, administrators can edit Recipients directly, and Send Now mails the current numbers immediately without moving the schedule. A digest whose recipients stop logging in slows its own periodicity and says so in the email. Digest Tips is the pool of rotating tips appended to each issue.

A digest form: Send Now and Deactivate in the header, the periodicity radios and next mailing date, and the KPI checkboxes grouped by app on the KPIs tab

IAP accounts

IAP › IAP Accounts lists the database's accounts for Odoo's paid in-app services — partner autocomplete, lead generation, SMS. Each shows its Balance, its State (Unregistered, Registered, Banned), an Email Alert Threshold with recipients for low-credit warnings, and Buy Credits, which opens Odoo's external IAP portal — purchases happen there, not inside WindoorERP. The Account Token identifies the account and should be treated as a secret.

The IAP Account list on a fresh WindoorERP database: Partner Autocomplete, Lead Generation and SMS accounts, every balance at zero

Troubleshooting

SymptomCause and fix
"Job '…' already executing" on Run ManuallyA server worker holds the job right now. Wait for it to finish; the message is a refusal, not an error in the job.
"Record cannot be modified right now" when editing a scheduled actionSame cause — the job is mid-run. Try again in a few minutes.
A scheduled action switched itself offIt failed at least five times over more than seven days; the deactivation notice with the exact time to check in the server logs was posted to the administrators' Discuss channel. Fix the cause, reset Active.
Emails leave up to an hour after being "sent"Normal: the Mail: Email Queue Manager job runs hourly. Run it manually to flush the queue now.
"Oops! We couldn't save your template due to an issue."A dynamic placeholder in the template is invalid — the error detail names it. Correct the expression and save again.
Notification row says Sent but the customer has nothingSent means handed to the mail server. Check the recipient's spam folder and address; only Bounced/Exception rows are WindoorERP-side failures.
Every SMS fails with Unregistered AccountNo IAP account is registered for SMS on this database. Register one and buy credits on the IAP portal, or remove SMS from your flows.
"… Please correct the number and try again." on the Phone BlacklistThe number cannot be parsed as a real phone number — enter it in international format.

Common mistakes

  • Editing intervals or code of shipped scheduled actions instead of deactivating what you do not want — a wrong interval on the mail queue affects every user's mail.
  • Reading Sent as "delivered" in the Notifications log and blaming the mail server for a spam-folder problem.
  • Deleting a shipped email template instead of pressing Reset Template or editing it — documents that auto-send with that template stop sending.
  • Expecting SMS or paper-letter features to work without a funded IAP account — they queue and fail, silently from the sender's point of view.
  • Marking a chatter subtype Default on a busy model — every new follower is then subscribed to that noise automatically.

Was this article helpful?

Running a window or door factory?

Ask for a demo