---
title: ElderMark API Workaround — Web Scraping with Axiom.ai
type: article
created: '2026-04-05'
updated: '2026-04-05'
source_docs:
- raw/2026-03-10-cordwainer-crm-call-128794269.md
tags:
- crm
- eldermark
- axiom-ai
- automation
- web-scraping
- workaround
layer: 2
client_source: null
industry_context: null
transferable: true
---

# ElderMark API Workaround — Web Scraping with Axiom.ai

## Problem

ElderMark does not expose a public API and is deliberately restrictive about external data access. This makes it impossible to build real-time integrations or trigger external automations (e.g., email nurture sequences in MailChimp) directly from ElderMark events.

The workaround is to automate the manual export process using a browser automation tool, so that contact data can be extracted on a schedule and fed into downstream systems without requiring manual effort from the client.

**Affects:** [[wiki/clients/cordwainer/index|Cordwainer]] — see [[wiki/clients/cordwainer/crm-automation-plan|CRM Automation Plan]] for full context.

---

## Chosen Tool: Axiom.ai

[Axiom.ai](https://axiom.ai) is a Chrome extension that records a sequence of browser interactions (clicks, text entry, navigation) and replays them on a schedule. It requires no code and can handle login flows, navigation, and file downloads.

**Pricing note:** The starter tier (~$30–50/month) supports one bot and is sufficient for a single scheduled export. Factor this into client billing.

**Key limitation:** Axiom.ai bots are brittle — if ElderMark changes any UI element (button label, position, DOM structure), the bot will silently fail or error out at that step. Plan for periodic maintenance.

---

## Bot Design: ElderMark Full Prospect Export

The goal is to automate a weekly export of the full "All Prospects" contact list as an XLS file.

### Login Flow

ElderMark's login page has a redirect quirk: navigating to the root URL causes a redirect that confuses the bot's field-targeting. The fix is to **start the bot at the direct tenant URL** (e.g., `app4.eldermark.com/Anthemian/`) rather than the generic login page.

The login form has three fields:
1. **Company Code** — labeled "login" in the help text (confusingly)
2. **Username** — the actual user login
3. **Password**

Steps:
1. Navigate to `app4.eldermark.com/[tenant]/` (direct tenant URL)
2. Enter text → Company Code field
3. Enter text → Username field
4. Enter text → Password field
5. Click → Login button

Credentials are stored in LastPass.

### Navigation to All Prospects

After login, ElderMark may land on different views depending on the user's last session state. To ensure consistent navigation regardless of landing page:

1. Click → hamburger/nine-dot menu (top left)
2. Click → **CRM** in the menu
3. Click → **CRM** link in the top navigation bar (secondary nav)
4. Click → **All Prospects** in the dropdown

> **Note:** Steps 2–4 are intentionally redundant to handle variable post-login states. The bot navigates through the full menu path every time rather than assuming a starting view.

### Export Steps

Once on the All Prospects list:

1. Click → **Download XLS** button (top right of prospect list)
2. Select → **All Pages** (not Current Page)
3. Click → **Export** button (gray button in the export dialog)

The file downloads directly to the local machine. It does **not** email the file — a subsequent automation step (e.g., a folder watch or upload script) would be needed to move it to a shared location.

---

## Current Status: BLOCKED

**Blocker:** The bot consistently fails at the **"All Prospects" click step**.

The element is visually identified and highlighted during the run, but Axiom.ai reports "couldn't find element: All Prospects" and errors out. This has occurred across multiple bot configurations and navigation path variations.

**Attempted mitigations (unsuccessful):**
- Added millisecond delays between steps
- Tried alternate navigation paths to reach the All Prospects view
- Rebuilt the bot from scratch multiple times

**Hypothesis:** The All Prospects link may be rendered in a way that Axiom.ai's element selector cannot reliably target (e.g., dynamically injected, inside a frame, or using non-standard click event handling). ElderMark may also have bot-detection that interferes after the login step.

**Next action (owner: Mark Hope):** Resume troubleshooting with a fresh session; investigate whether the element can be targeted by XPath or CSS selector rather than visual click recording.

---

## Fallback: Manual Export by Client

If the Axiom.ai bot cannot be made reliable, the fallback is to ask the client (Erica) to perform the export manually on a weekly cadence and drop the file in a designated shared folder.

- Erica already performs a similar export for another team member (Sebastian), so the process is familiar.
- Establish a **file naming convention** (e.g., `eldermark-prospects-YYYY-MM-DD.xls`) so downstream automations can reliably locate the latest file.
- The export would then feed into MailChimp audience syncs for the three planned nurture sequences.

This is the recommended interim approach while the bot issue is investigated.

---

## Related

- [[wiki/clients/cordwainer/crm-automation-plan|Cordwainer CRM Automation Plan]]
- [[wiki/clients/cordwainer/index|Cordwainer Client Index]]
- [[wiki/knowledge/crm-automation/email-nurture-sequences|Email Nurture Sequence Design]] *(planned)*