Skip to content

Tasks

A Task is anything someone needs to do: a callback, a contract review, a check-in. Tasks can stand on their own or hang off one record: a lead, an account, a deal or a ticket.

Fields

  • Title and description
  • Status: New, In Progress or Completed
  • Priority: Low, Medium or High
  • Due date: a date, with no time of day
  • Assignees: one or more people, plus teams
  • Linked record: at most one lead, account, deal or ticket, and any number of contacts
  • Tags and custom fields, such as estimated hours, billable or a project code

Where tasks show up

  • Task list: /tasks on the web and the Tasks tab on the phone, newest first, filtered by status, priority, assignee and due-date range.
  • Calendar: /tasks/calendar on the web and the calendar view on the phone put dated tasks on a month grid. A task with no due date appears only in the list.
  • Today: the web home page's list of what needs you includes tasks that are overdue or due today, beside tickets awaiting a reply, invoices past due and deals gone quiet.
  • Account page on the phone: lists the tasks linked to that account. The web account page and the lead pages on either client do not list tasks.
  • Your own calendar app: from django-crm 1.13.0, through a calendar feed. See below.

Calendar feed

From django-crm 1.13.0 you can subscribe Google Calendar, Outlook or Apple Calendar to your open tasks. Turn the feed on at /profile/calendar-feed on the web, or Profile → Calendar feed on the phone, and copy the URL it shows you. It is shown once: the server keeps only a hash of it, so if you lose it, regenerate it.

What the feed carries:

  • Which tasks: your own, meaning the ones you created and the ones assigned to you, that are New or In progress and have a due date from 90 days ago to a year ahead. This is the same for admins: the feed is your work, not the whole organization's. At most 1,000: tasks due today or later come first, soonest first, then overdue ones, most recent first. This is checked on every fetch, so a task that is no longer yours drops off.
  • What each event shows: one all-day event on the due date, with the task's title, its priority and a link to the task. Nothing else: not the task's description, and no contact, account or other record names, because your calendar is read by Google, Microsoft or Apple on your behalf. The event does not mark you busy.
  • How fresh it is: calendar apps fetch a subscribed calendar on their own schedule, and Google can take several hours, so changes arrive late.

To subscribe:

  • Google Calendar: on a computer, open Google Calendar. Beside Other calendars choose +, then From URL, paste the feed URL and choose Add calendar.
  • Outlook: in Outlook on the web choose Add calendar, then Subscribe from web, paste the feed URL and choose Import.
  • Apple Calendar: choose File, then New Calendar Subscription, and paste the feed URL.

The URL is the key. Anyone who has it can see the titles and priorities of your open tasks without signing in. Give it to nothing but your calendar app. Regenerate makes a new URL and stops the old one at once; Turn off stops it altogether. It also stops working on its own if you leave the organization or your account is deactivated. An API token cannot create or read a feed URL; it takes a signed-in session.

GET    /api/profile/calendar-feed/       whether it is on, and when it was last fetched
POST   /api/profile/calendar-feed/       turn it on or regenerate it; the response carries the URL
DELETE /api/profile/calendar-feed/       turn it off
GET    /api/public/calendar/<token>.ics  the feed itself, no sign-in

Any bad, old or disabled feed URL answers 404. The feed is rate-limited per address (CALENDAR_FEED_THROTTLE_IP, default 1000/hour) and per feed (CALENDAR_FEED_THROTTLE_TOKEN, default 60/hour). If you host BottleCRM yourself, the URL is built from the backend's DOMAIN_NAME, which has to be the API's public address; see Environment.

Boards

/tasks/board on the web, and the board on the phone, are kanban boards you build yourself: each board has its own columns and its own cards, and you drag or move a card between columns. A board card is a separate record from a task, so cards do not appear in the task list and tasks are not laid out on a board.

Recurrence and reminders

Neither exists. There is no recurrence field on a task and no scheduled job that regenerates one, and nothing sends a reminder by email or push at any offset before a due date. A task has a due date, the list can be filtered to a range of them, the calendar puts it on its day, and overdue ones show up on the home page.

The whole of this used to be documented here in detail, down to "weekly on chosen days" and "1 day before due". None of it was ever built.

Bulk operations

Not for tasks. Multi-select bulk actions exist for tickets only (bulk/update/ and bulk/delete/ under /api/cases/). Tasks have no bulk endpoint and no CSV export. Six other lists do export: leads, contacts, accounts, deals, tickets and invoices (see CSV import and export).

See also