So far I have written this code... (defun org-capture-expand-headline (headline) "Expand functions, symbols and strings for HEADLINE. When HEADLINE is a function, call it. When it is a form, evaluate it. When it is a variable, return its value. When it is a string, treat it as a headline title. When it is `t', select existing headline title or enter a new one. In any other case, raise an error." (let* ((headlines (org-map-entries (lambda () (org-element-property :title (org-element-at-point))))) (final-headline (cond ((stringp headline) headline) ((functionp headline) (funcall headline headlines)) ((eq headline t) (completing-read "Enter headline: " headlines nil 'confirm)) ((and (symbolp headline) (boundp headline)) (symbol-value headline)) (t nil)))) (or (org-string-nw-p final-headline) (error "Invalid headline: %S" headline)))) and I updated `org-capture-set-target-location' to use that function when handling with target `file+headline' What I am concerned about is the amount of tests I might have to write or update for `org-capture'. testing/lisp/test-org-capture.el 125: `(("t" "Todo" entry (file+headline ,file "A") "** H1 %?")))) 144: `(("t" "Todo" entry (file+headline ,file2 "A") 175: `(("t" "Todo" entry (file+headline ,file "A") "** H1 %?")))) 221: `(("t" "Todo" entry (file+headline ,file "A") "** H1 %?")))) 233: `(("t" "Test" entry (file+headline ,file "A") "** H\nFoo" 243: `(("t" "Test" entry (file+headline ,file "A") "** " 279: `(("t" "Item" item (file+headline ,file "A") "- X")))) 312: `(("t" "Item" item (file+headline ,file "A") "- X")))) 323: `(("t" "Item" item (file+headline ,file "A") "- X" 337: `(("t" "Item" item (file+headline ,file "A") "- X" 358: `(("t" "Item" item (file+headline ,file "A") "- X" 371: `(("t" "Item" item (file+headline ,file "A") "- X")))) 538: `(("t" "Table" table-line (file+headline ,file "Inbox") 552: `(("t" "Table" table-line (file+headline ,file "Inbox") 723: `(("t" "Text" plain (file+headline ,file "A") "Foo" 733: `(("t" "Text" plain (file+headline ,file "A") "Foo" How do you think it should be tested if the headline can be 4 different types? Apology in advance if the formatting is off.