How about ... Here is a first simple example file. It's not very elaborate and can be done better. I just used the first functions I found in bbdb code, that do what I need. In some cases it might be better to use `bbdb-search' directly. But it let's us insert bbdb: and mailto: links easily. Basically, it works like this: 1. C-c b s (org-bbdb/select-record) selects a record for use. You have to call this function to select a new record. If no record is selcted, the functions in (2.) call this automatically. 2. Use the insertion functions: - C-c b n (org-bbdb/insert-name) inserts the name of the currently selected record at point. With prefix arg, inserts a bbdb: org-link. - C-c b m (org-bbdb/insert-mail) inserts the email address of the current record at point. With prefix arg, inserts a mailto: org-link. - C-c b m (org-bbdb/insert-phone) inserts the phone number of the current record at point. With prefix arg, inserts a dial: org-link - a link type, that is not yet defined. It's supposed to call `bbdb-dial-number' on activation. Just an idea... - C-c b a (org-bbdb/insert-address) inserts the postal address of the selected record at point. As the other functions, this is far from perfect... C-c b TAB (org-bbdb/complete-name) tries to complete a name at point and inserts an Org-link. The link is either a bbdb: link, or a mailto: link. Depends on your setting of `org-bbdb-default-link-type'. This function does not yet select a new record. Nice to have: We could add a function, that `narrows' to a set of bbdb records based on a certain field, e.g. city or note or custom field (e.g. `tag'). We could then format that list and insert that into a buffer. Or write a mail to all those in the list by Bcc-ing them all. Best wishes Sebastian