Skip to content

ob325/org-wrike

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

org-wrike

An Org mode integration for the Wrike project management service.

org-wrike fetches tasks from user-specified Wrike projects and writes them as per-project .org files that are automatically added to org-agenda-files. Your Wrike deadlines appear alongside your regular Org tasks in org-agenda without any manual copy-pasting.

Read-only by design. org-wrike never writes back to the Wrike API; it only reads.


Features

  • Sync Wrike tasks into Org headings with TODO keywords, priorities, DEADLINE, and SCHEDULED timestamps
  • Per-project .org files — one file per Wrike folder/project
  • Idempotent updates — re-running sync preserves notes you have added under task headings
  • Optional auto-refresh timer
  • Open the Wrike web app for a task directly from Emacs
  • List all folders/projects to discover IDs
  • OAuth 2.0 authentication with a local callback server (no browser extension needed)

Requirements

  • Emacs 27.1 or later
  • Org mode 9.3 or later
  • A Wrike account (any tier)

Installation

MELPA (recommended)

Add MELPA to your package-archives if you have not already:

(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/") t)

Then:

M-x package-install RET org-wrike RET

use-package

(use-package org-wrike
  :ensure t
  :config
  (setq org-wrike-client-id     "YOUR_CLIENT_ID"
        org-wrike-client-secret "YOUR_CLIENT_SECRET"
        org-wrike-folder-ids    '("FOLDER_ID_1" "FOLDER_ID_2")))

Manual

Clone this repository and add it to your load-path:

(add-to-list 'load-path "/path/to/org-wrike")
(require 'org-wrike)

Wrike App Setup

  1. Go to https://www.wrike.com/frontend/apps/index.html#api and click Create new.
  2. Give the app a name (e.g. org-wrike).
  3. Set the Redirect URI to http://localhost:10095 (or the port you set in org-wrike-redirect-port).
  4. Copy the Client ID and Client Secret.

Configuration

;; Required
(setq org-wrike-client-id     "YOUR_CLIENT_ID"
      org-wrike-client-secret "YOUR_CLIENT_SECRET")

;; The Wrike folder/project IDs you want to track.
;; Use M-x org-wrike-list-folders to discover IDs.
(setq org-wrike-folder-ids '("IEAAAXXX" "IEAAAYYY"))

;; Where to store the generated .org files (default: ~/.org-wrike/)
(setq org-wrike-directory "~/org/wrike/")

;; Automatically sync every 30 minutes
(setq org-wrike-auto-sync-interval 1800)

;; Sync only active tasks (default: '("Active" "Deferred"))
(setq org-wrike-sync-task-statuses '("Active" "Deferred" "Completed"))

;; Include the Wrike task description in the heading body
(setq org-wrike-include-description t)

All options

Variable Default Description
org-wrike-client-id nil OAuth2 client ID
org-wrike-client-secret nil OAuth2 client secret
org-wrike-redirect-port 10095 Local callback port
org-wrike-directory ~/.org-wrike/ Output directory for .org files
org-wrike-folder-ids nil List of project IDs to sync
org-wrike-todo-keyword-map see below Wrike status → Org keyword
org-wrike-priority-map see below Wrike importance → Org priority
org-wrike-include-description nil Include task description
org-wrike-sync-task-statuses '("Active" "Deferred") Statuses to fetch
org-wrike-archive-removed-tasks t Mark missing tasks CANCELLED
org-wrike-auto-sync-interval nil Seconds between auto-syncs

Default TODO keyword map:

Wrike status Org keyword
Active TODO
Completed DONE
Deferred WAIT
Cancelled CANCELLED

Default priority map:

Wrike importance Org priority
High A
Normal B
Low C

Usage

First-time authorisation

M-x org-wrike-authorize

A browser tab opens with the Wrike login/consent page. After you grant access, Wrike redirects to the local callback server. Tokens are saved to ~/.org-wrike/.tokens and refreshed automatically — you only need to authorise once.

Sync all configured projects

M-x org-wrike-sync

Per-project .org files are written to org-wrike-directory and appended to org-agenda-files.

Discover folder IDs

M-x org-wrike-list-folders

Displays a buffer listing all your Wrike folders with their IDs. Copy IDs into org-wrike-folder-ids.

Sync current project only

From within a project's .org file:

M-x org-wrike-sync-project

Open the Wrike web app for a task

Position point on a task heading and run:

M-x org-wrike-open-task

Or copy the URL:

M-x org-wrike-copy-task-url

Auto-sync

;; Enable after setting org-wrike-auto-sync-interval
(org-wrike-enable-auto-sync)

;; Disable
(org-wrike-disable-auto-sync)

Revoke credentials

M-x org-wrike-revoke-authorization

Generated file structure

Each synced project produces a file like ~/.org-wrike/My_Project.org:

* My Project
:PROPERTIES:
:WRIKE_FOLDER_ID: IEAAAXXX
:WRIKE_PROJECT_START: <2026-01-01 Thu>
:WRIKE_PROJECT_END:   <2026-12-31 Thu>
:END:

** TODO [#A] Fix login bug
DEADLINE: <2026-05-01 Fri>
SCHEDULED: <2026-04-15 Wed>
:PROPERTIES:
:WRIKE_ID:        ABC123
:WRIKE_URL:       https://www.wrike.com/open.htm?id=12345
:WRIKE_STATUS:    Active
:WRIKE_ASSIGNEES: Alice Smith
:WRIKE_UPDATED:   2026-04-10
:END:

** DONE [#B] Write documentation
DEADLINE: <2026-03-31 Tue>
:PROPERTIES:
:WRIKE_ID:        DEF456
:WRIKE_URL:       https://www.wrike.com/open.htm?id=67890
:WRIKE_STATUS:    Completed
:WRIKE_ASSIGNEES: Bob Jones
:WRIKE_UPDATED:   2026-03-30
:END:

Re-running sync updates existing headings in-place. Any text you write below the :END: line of a task's property drawer is preserved.


Running Tests

emacs --batch \
      -l org-wrike.el \
      -l test/test-org-wrike.el \
      -f ert-run-tests-batch-and-exit

Contributing

Contributions are welcome. Please:

  1. Fork the repository and create a feature branch.
  2. Ensure all ERT tests pass (emacs --batch ... -f ert-run-tests-batch-and-exit).
  3. Run M-x package-lint-current-buffer in org-wrike.el and fix any warnings.
  4. Open a pull request with a clear description of your changes.

License

GPL-3.0-or-later. See LICENSE.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors