# iScroll User Guide

**Version:** 4.6.0  
**Last Updated:** December 1, 2025  
**URL:** https://1freecoffee.com

---

## Welcome to iScroll! ☕

iScroll is your all-in-one contact processing toolkit. Whether you're cleaning up messy contact lists, uploading directly to HubSpot, extracting contacts from PDFs, or finding podcast RSS feeds - iScroll has you covered.

**Key Features:**

🚀 **HubSpot Integration** - Upload contacts directly with automatic list management

📋 **Contact Processing** - Clean and format messy contact data into spreadsheets

📄 **PDF Extraction** - Pull contact information from PDF documents

🎙️ **RSS Feed Finder** - Locate podcast RSS feeds from any URL

---

## 🚀 HubSpot Integration (Featured)

iScroll's HubSpot integration lets you upload contacts directly to your HubSpot CRM with automatic list management. No more manual data entry!

### How It Works

**The Flow:** You Paste Contacts + Token → iScroll Processes → HubSpot CRM Updated!

iScroll validates emails, creates/updates contacts, and adds them to your specified list - all automatically.

---

### Setting Up Your HubSpot Private App

Before using iScroll with HubSpot, you need to create a **Private App** in your HubSpot account. This gives iScroll permission to access your contacts.

**Step 1: Log into HubSpot**

Go to [app.hubspot.com](https://app.hubspot.com) and sign in.

**Step 2: Navigate to Private Apps**

Click the ⚙️ Settings gear icon (top right). In the left sidebar, click Integrations, then click Private Apps.

**Step 3: Create a New Private App**

Click "Create a private app" button. Give it a name: `iScroll Contact Uploader`. Add a description (optional).

**Step 4: Configure Scopes (Permissions)**

Click the Scopes tab and add these permissions:

| Scope | Purpose |
|-------|---------|
| `crm.objects.contacts.read` | Read existing contacts |
| `crm.objects.contacts.write` | Create/update contacts |
| `crm.lists.read` | Search for lists |
| `crm.lists.write` | Create lists, add members |

**Step 5: Create the App & Copy Your Token**

Click "Create app" button. Review and click "Continue creating". Your Access Token will be displayed. Click "Show token" and copy it.

Your token will look like: `pat-na2-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx`

⚠️ **Important:** Your token is like a password. Never share it publicly!

---

### Using the HubSpot Upload Feature

Once you have your Private App token, you're ready to upload contacts!

**Step 1:** Go to [https://1freecoffee.com](https://1freecoffee.com) and log in.

**Step 2:** Click the **📤 HubSpot** tab.

**Step 3:** Paste your Private App Access Token in the token field.

**Step 4:** Paste your contacts. You can use raw text format:

```
Angus Yung
Senior Marketing Director
Chaos Industries
angus.yung@chaosindustries.com

Ozzy Osbourn
VP of Product Development
Lava Flow Corp
ozzy.osbourn@lavaflowcorp.com
```

Or CSV format:

```
John Smith,CEO,Acme Corp,john@acme.com
Jane Doe,CTO,Tech Inc,jane@tech.com
```

**Step 5:** Enter a **HubSpot List Name** (recommended).

⚠️ **List names are mandatory by default** - this helps keep your contacts organized! Examples:
- `Conference Leads Nov 2024`
- `Trade Show Contacts`
- `Podcast Outreach Q4`

If you really don't want to use a list, check the "Skip list assignment" checkbox (not recommended).

**Step 6:** (Optional) Enter a **Save input as** name.

This archives your original input text on the server for future reference. Useful for:
- Tracking what you've uploaded
- Debugging if something goes wrong
- Keeping a record of your data sources

**Step 7:** Click "🚀 Process & Upload to HubSpot".

You'll see results showing contacts created, contacts updated, list created/found, and contacts added to list.

---

### Understanding Lists (Segments)

HubSpot calls lists "Segments" in the UI, but the API still uses "lists."

**Why Lists Matter:**

Lists are essential for organizing your contacts in HubSpot. Without lists, your contacts become a jumbled mess that's hard to search, filter, and work with. Think of lists as folders for your contacts.

**Benefits of using lists:**
- **Easy filtering**: Quickly find all contacts from a specific event or campaign
- **Email targeting**: Send emails to specific groups without manual selection
- **Reporting**: Track engagement by source (e.g., "How did my trade show contacts perform?")
- **Workflow triggers**: Automate actions based on list membership
- **Team collaboration**: Share organized contact groups with colleagues

**Static Lists** (what iScroll creates): You add/remove contacts manually. Perfect for:
- Event attendee lists
- Import batches from specific sources
- Campaign-specific contacts
- One-time outreach lists

**Active Lists** (dynamic): Auto-updates based on filters. Cannot add contacts via API - these are created within HubSpot based on contact properties.

---

### Troubleshooting HubSpot

| Problem | Solution |
|---------|----------|
| "Invalid token" | Check token is complete, regenerate if needed |
| "Missing scopes" | Add scopes in HubSpot, copy NEW token |
| "List not found" | List may be dynamic, try new name |
| "Contacts not added" | Verify crm.lists.write scope |
| "Invalid email" | Check for typos, remove separator lines |

**Token Region Prefixes:**

| Prefix | Region |
|--------|--------|
| `pat-na1-` | North America 1 |
| `pat-na2-` | North America 2 |
| `pat-eu1-` | Europe |

---

## 📋 Contact Processing

The Contact Processing feature cleans and formats messy contact data into organized spreadsheets.

### When to Use This

Use this when you have contact data from various sources, want to clean up data before manually importing to a CRM, need a CSV file for other tools, or prefer to review contacts before uploading.

### Input Formats

iScroll intelligently parses many formats.

**Business Card Style:**

```
John Smith
Senior Vice President
Acme Corporation
john.smith@acme.com
```

**Email Signature Style:**

```
Best regards,
Jane Doe | CTO | Tech Inc
jane@tech.com
```

**LinkedIn Export:**

```
Bob Wilson - CFO at Finance Co
bob.wilson@finance.co
```

### Processing Your Contacts

**Step 1:** Go to the Contacts Tab.

**Step 2:** Paste your raw contact data.

**Step 3:** Click "Process".

**Step 4:** Review the results.

**Step 5:** Download as CSV or copy to clipboard.

### Output Columns

| Column | Description | Example |
|--------|-------------|---------|
| First Name | Given name | John |
| Last Name | Family name | Smith |
| Title | Job title | Senior VP |
| Company | Organization | Acme Corp |
| Email | Primary email | john@acme.com |
| Phone | Phone number | (555) 123-4567 |

---

## 📄 PDF Contact Extraction

Extract contact information from PDF documents using OCR technology.

### How It Works

Upload PDF → OCR Scan → Parse Text → Clean Output

### Best Results Tips

Clear PDFs work best - avoid blurry scans. Text-based PDFs are faster than image-based. Standard layouts are more accurately parsed. Always review output - OCR isn't perfect!

### Steps

**Step 1:** Click the 📄 PDF tab.

**Step 2:** Upload your PDF file.

**Step 3:** Wait for processing.

**Step 4:** Review extracted contacts.

**Step 5:** Download or copy results.

---

## 🎙️ RSS Feed Finder

Find podcast RSS feeds from any podcast URL or name. The RSS Feed Finder uses the **PodcastIndex.org** API to search millions of podcasts.

### Use Cases

Finding RSS feeds for podcast apps. Setting up podcast monitoring. Subscribing to shows not in your app's directory. Building podcast databases for outreach.

### ⚠️ Required: PodcastIndex API Credentials

Before using the RSS Feed Finder, you need to obtain **FREE API credentials** from PodcastIndex.org. This is a one-time setup that takes about 2 minutes.

---

### Setting Up Your PodcastIndex API Credentials

**Step 1: Create a Free Account**

Go to [https://api.podcastindex.org/](https://api.podcastindex.org/) and click the link to register for free API credentials.

**Step 2: Get Your API Key and Secret**

After registration, you'll receive:
- **API Key** - A unique identifier (looks like: `LGBTRCQLWMTHVQJUBZA2`)
- **API Secret** - A private secret (looks like: `MNY5wHTLJLU$39bhrrbJNm9uzZbUMTnqBMtDYsKq`)

**Step 3: Save Your Credentials**

⚠️ **Important:** Save your API Key and Secret somewhere safe! You'll need them to use the RSS Feed Finder.

📚 **For more details:** Visit [PodcastIndex.org](https://podcastindex.org/) for their full API documentation and terms of service.

---

### Using the RSS Feed Finder

**Step 1:** Go to [https://1freecoffee.com](https://1freecoffee.com) and log in.

**Step 2:** Click the **🎙️ RSS Feed** tab.

**Step 3:** Enter your PodcastIndex API credentials:
- Paste your **API Key** in the API Key field
- Paste your **API Secret** in the API Secret field
- (Optional) Check "Remember credentials" to save them for future sessions

**Step 4:** Enter podcast names or titles to search for:

```
The Daily
Serial
How I Built This
Radiolab
```

Or paste a CSV with podcast titles.

**Step 5:** Click **"Find RSS Feeds"**.

**Step 6:** Review the results - iScroll will display found RSS feed URLs alongside each podcast name.

**Step 7:** Download the results as CSV or copy to clipboard.

---

### Input Options

You can search using:
- **Podcast names** (e.g., "The Daily", "Serial")
- **Partial titles** (e.g., "How I Built" will find "How I Built This")
- **CSV files** with podcast titles in a column

### Tips for Best Results

| Do ✅ | Don't ❌ |
|-------|---------|
| Use exact podcast names when possible | Search for very generic terms |
| Check spelling of podcast titles | Expect 100% match rate |
| Try variations if not found | Give up after one search |

💡 **Tip:** Some podcasts are exclusive to specific platforms (like iHeart or Spotify) and may not have public RSS feeds. If a podcast isn't found, try searching manually at [podcastindex.org](https://podcastindex.org/).

### Troubleshooting RSS Finder

| Problem | Solution |
|---------|----------|
| "Invalid API credentials" | Double-check your Key and Secret are correct |
| "No results found" | Try different spelling or search at podcastindex.org |
| "Rate limit exceeded" | Wait a few minutes, PodcastIndex has usage limits |
| Podcast not in database | It may be exclusive to a platform without public RSS |

---

## 💡 Tips & Best Practices

### For HubSpot Uploads

**Before Upload:** Verify your token is current. Check that all required scopes are enabled. Review contact data for obvious errors. Decide on a list name if grouping contacts.

**After Upload:** Check the results summary for errors. Verify contacts appear in HubSpot. Confirm list was created (if specified).

### Data Quality Tips

| Do ✅ | Don't ❌ |
|-------|---------|
| Include valid email addresses | Upload contacts without emails |
| Use consistent formatting | Mix wildly different formats |
| Clean data before upload | Include separator lines |
| Start with small test batch | Upload thousands untested |

### Security Best Practices

🔒 **Your HubSpot token is sensitive** - Never share it publicly. Don't commit it to git. Regenerate if compromised.

🔒 **iScroll doesn't store your token** - Enter it fresh each session. Token is used only for API calls.

---

## ❓ FAQ

**Q: Do I need a paid HubSpot account?**

A: The basic contact and list features work with HubSpot Free.

**Q: Is my data secure?**

A: Yes! Your HubSpot token is used only for API calls and isn't stored.

**Q: Why do I need to create a Private App?**

A: Private Apps are HubSpot's secure way to grant API access.

**Q: What happens if I upload a contact that already exists?**

A: iScroll will update the existing contact and add them to your list.

**Q: Why were some contacts skipped?**

A: Contacts are skipped if they don't have a valid email address.

**Q: I'm getting "Invalid token" but I just copied it. What's wrong?**

A: Make sure you copied the entire token with no extra spaces.

---

## Need Help?

**Email:** support@1freecoffee.com

**Documentation:** This guide and in-app help

---

*iScroll - Because life's too short for messy contact lists* ☕

**Version 4.6.0** | **© 2025 iScroll**
