Менеджер по продажам каждый день делает одно и то же: открывает CRM, копирует данные, вставляет в Excel, добавляет графики, отправляет начальнику. На это уходит 30–60 минут в день. В месяц — 10–20 часов впустую.
Представьте: начальник открывает почту в 9 утра, а там уже готовый красивый отчёт с цифрами, графиками и выводами. Это возможно. И это не сложно настроить.
Давайте разберёмся, как автоматизировать отчёты по продажам от сбора данных до отправки.
Архитектура автоматизации
CRM (данные) → Сбор данных → Обработка → Генерация отчёта → Отправка
↓ ↓ ↓ ↓ ↓
Амосам API запрос Excel/SQL Word/PDF Email/Slack
1С/ERP Google Sheets Расчёты Графики
Stripe Экспорт Фильтры Диаграммы
Каждый шаг можно автоматизировать.
Шаг 1: Сбор данных из CRM
Вариант 1: Встроенный экспорт CRM
Большинство CRM (Амосам, Bitrix24, Pipedrive, HubSpot) имеют встроенный экспорт.
Амосам:
- Открыть CRM
- Список → Экспорт → Выбрать поля (дата, сумма, этап)
- Сохранить как CSV
Pipedrive:
- Sales → Deals
- Export → Выбрать фильтры (дата, статус)
- Сохранить Excel
Проблема: Это всё ещё ручная работа. Нужно делать каждый день.
Вариант 2: API CRM + скрипт
Лучший способ — использовать API CRM.
Пример с Pipedrive API:
import requests
import pandas as pd
from datetime import datetime, timedelta
# Параметры
API_KEY = 'your_pipedrive_api_key'
BASE_URL = 'https://api.pipedrive.com/v1'
# Получить все совершённые заказы за сегодня
today = datetime.now().strftime('%Y-%m-%d')
yesterday = (datetime.now() - timedelta(days=1)).strftime('%Y-%m-%d')
response = requests.get(
f'{BASE_URL}/deals',
params={
'api_token': API_KEY,
'status': 'won', # только выигранные заказы
'limit': 500
}
)
deals = pd.DataFrame(response.json()['data'])
# Фильтр за сегодня
deals['add_time'] = pd.to_datetime(deals['add_time'])
today_deals = deals[deals['add_time'].dt.date.astype(str) == today]
# Сохранить
today_deals[['id', 'title', 'value', 'add_time']].to_excel('sales_today.xlsx', index=False)
print(f"Найдено {len(today_deals)} заказов за {today}")
Запустите этот скрипт каждый день в 6 утра → данные готовы.
Вариант 3: Zapier или Make (no-code)
Если не знаете программирование, используйте no-code платформы.
Zapier:
- Создайте Zap: Pipedrive → Google Sheets
- Триггер: “New deal won”
- Действие: “Create row in Google Sheets”
- Запустите каждый день
Make (бывший Integromat): Похоже, но более гибко.
Цена: Zapier $20–100/мес, Make $10–500/мес в зависимости от объёма.
Шаг 2: Обработка и расчёты
Теперь у вас есть сырые данные. Нужно вычислить метрики.
Вариант 1: Excel формулы
Если используете Google Sheets:
Всего заказов: =COUNTA(A:A)-1
Сумма: =SUM(B:B)
Средний чек: =AVERAGE(B:B)
Средняя конверсия: =COUNTIF(C:C, "завершён") / COUNTIF(C:C, "новая вакансия")
Эти формулы автоматически считаются при обновлении данных.
Вариант 2: Python + Pandas
import pandas as pd
from datetime import datetime
# Загрузить данные
df = pd.read_excel('sales_today.xlsx')
# Вычислить метрики
metrics = {
'Дата': datetime.now().strftime('%d.%m.%Y'),
'Всего заказов': len(df),
'Сумма, руб': df['value'].sum(),
'Средний чек': df['value'].mean(),
'Максимальный заказ': df['value'].max(),
'Успешных (%))': (df['status'] == 'завершён').sum() / len(df) * 100
}
# Сравнить с вчера
yesterday_df = pd.read_excel('sales_yesterday.xlsx')
growth = (metrics['Сумма, руб'] / yesterday_df['value'].sum() - 1) * 100
print(f"Выручка: {metrics['Сумма, руб']:,} руб ({growth:+.1f}% vs вчера)")
# Сохранить для использования в отчёте
pd.Series(metrics).to_csv('metrics_today.csv')
Шаг 3: Генерация отчёта
Теперь нужно собрать красивый отчёт.
Вариант 1: Word через python-docx
from docx import Document
from docx.shared import Inches, Pt, RGBColor
from datetime import datetime
doc = Document()
# Заголовок
title = doc.add_heading('Ежедневный отчёт по продажам', 0)
subtitle = doc.add_paragraph(f'Дата: {datetime.now().strftime("%d.%m.%Y")}')
# Ключевые метрики (таблица)
table = doc.add_table(rows=1, cols=2)
hdr_cells = table.rows[0].cells
hdr_cells[0].text = 'Метрика'
hdr_cells[1].text = 'Значение'
metrics_list = [
('Всего заказов', '12'),
('Сумма', '150 000 руб'),
('Средний чек', '12 500 руб'),
('Успешных %', '75%'),
]
for metric, value in metrics_list:
row = table.add_row()
row.cells[0].text = metric
row.cells[1].text = value
# Анализ
doc.add_heading('Анализ', level=1)
analysis_text = """
Сегодня отличный день:
- Количество заказов на 15% выше среднего
- Средний чек вырос на 8% благодаря новому пакету услуг
- Конверсия 75% — лучшая за неделю
Рекомендация: продолжить активную работу, эта тактика работает.
"""
doc.add_paragraph(analysis_text)
# Сохранить
doc.save(f'Report_{datetime.now().strftime("%d_%m_%Y")}.docx')
print("Отчёт сохранён")
Вариант 2: Google Docs (через API)
Если предпочитаете облако:
from google.auth.transport.requests import Request
from google.oauth2.credentials import Credentials
from google.auth.oauthlib.flow import InstalledAppFlow
from google.apps import docs_v1
# Подготовить текст
title = 'Отчёт по продажам за 19.03.2026'
content = [
{'insertText': {'text': title}},
{'updateTextStyle': {'range': {'startIndex': 0, 'endIndex': len(title)}, ...}},
{'insertText': {'text': 'Всего заказов: 12\nСумма: 150 000 руб\n...'}},
]
# Создать документ
docs_service = docs_v1.DocsService(...)
doc = docs_service.documents().create(body={'title': title}).execute()
# Добавить содержимое
docs_service.documents().batchUpdate(
documentId=doc['documentId'],
body={'requests': content}
).execute()
print(f"Создан документ: {doc['webViewLink']}")
Вариант 3: Готовые шаблоны (PDF через html2pdf)
import pdfkit
from datetime import datetime
html_content = f"""
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<style>
body {{ font-family: Arial; margin: 40px; }}
h1 {{ color: #333; }}
.metric {{ display: inline-block; margin: 20px 40px 20px 0; }}
.number {{ font-size: 28px; color: #0066cc; font-weight: bold; }}
.label {{ font-size: 14px; color: #666; }}
</style>
</head>
<body>
<h1>Ежедневный отчёт по продажам</h1>
<p>Дата: {datetime.now().strftime('%d.%m.%Y')}</p>
<div class="metric">
<div class="number">12</div>
<div class="label">Заказов</div>
</div>
<div class="metric">
<div class="number">150k</div>
<div class="label">Выручка, руб</div>
</div>
<div class="metric">
<div class="number">75%</div>
<div class="label">Успешных</div>
</div>
</body>
</html>
"""
pdfkit.from_string(html_content, 'report.pdf')
print("PDF сохранён")
Шаг 4: Отправка
Вариант 1: Email через Python
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email.mime.text import MIMEText
from email.encoders import encode_base64
from datetime import datetime
# Подготовить письмо
msg = MIMEMultipart()
msg['From'] = 'sales-reports@company.ru'
msg['To'] = 'boss@company.ru'
msg['Subject'] = f'Отчёт по продажам {datetime.now().strftime("%d.%m.%Y")}'
# Тело письма
body = """
Добрый день!
Прилагаю сегодняшний отчёт по продажам.
Ключевые цифры:
- Заказов: 12 (план: 10)
- Выручка: 150 000 руб (план: 120 000)
- Успешных: 75%
Детали в приложении.
С уважением,
Автоматическая система отчётов
"""
msg.attach(MIMEText(body, 'plain', 'utf-8'))
# Приложить файл
attachment = open('Report_today.docx', 'rb')
part = MIMEBase('application', 'octet-stream')
part.set_payload(attachment.read())
encode_base64(part)
part.add_header('Content-Disposition', 'attachment; filename= Report_today.docx')
msg.attach(part)
# Отправить
server = smtplib.SMTP('smtp.gmail.com', 587)
server.starttls()
server.login('sales-reports@company.ru', 'password')
server.send_message(msg)
server.quit()
print("Письмо отправлено")
Вариант 2: Slack уведомление
import requests
from datetime import datetime
slack_message = {
"text": f"📊 Ежедневный отчёт по продажам за {datetime.now().strftime('%d.%m.%Y')}",
"blocks": [
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "*Продажи сегодня*\n✅ Заказов: 12\n💰 Выручка: 150,000 руб\n⭐ Успешных: 75%"
}
},
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "<https://drive.google.com/file/report|Открыть полный отчёт>"
}
}
]
}
requests.post(SLACK_WEBHOOK_URL, json=slack_message)
print("Slack сообщение отправлено")
Вариант 3: Google Drive
from google.auth.transport.requests import Request
from google.drive_v3 import DriveService
drive_service = DriveService(...)
file_metadata = {'name': f'Report_{datetime.now().strftime("%d_%m_%Y")}.docx'}
media = MediaFileUpload('Report_today.docx', mimetype='application/vnd.openxmlformats-officedocument.wordprocessingml.document')
file = drive_service.files().create(body=file_metadata, media_body=media, fields='id').execute()
print(f"Загруженo в Drive: {file.get('id')}")
Полная автоматизация: Cron
Чтобы всё работало ежедневно без вашего участия, используйте cron (на Linux/Mac) или Task Scheduler (на Windows).
Cron (Linux/Mac)
- Создайте скрипт
run_sales_report.sh:
#!/bin/bash
cd /home/user/sales_report
python collect_data.py
python calculate_metrics.py
python generate_report.py
python send_email.py
- Добавьте в crontab:
crontab -e
Добавьте строку (каждый день в 7 утра):
0 7 * * * /home/user/sales_report/run_sales_report.sh
Task Scheduler (Windows)
- Создайте батник
run_report.bat:
@echo off
cd C:\Users\User\sales_report
python collect_data.py
python calculate_metrics.py
python generate_report.py
python send_email.py
- Откройте Task Scheduler:
- New Task
- Name: “Daily Sales Report”
- Triggers: Daily at 07:00
- Actions: Start program →
C:\Users\User\sales_report\run_report.bat
Готовые платформы для автоматизации отчётов
Если не хотите писать код, есть готовые сервисы:
| Платформа | Цена | Для чего |
|---|---|---|
| Zapier | $20–100/мес | Простая интеграция CRM → Email → облако |
| Make | $10–500/мес | Более гибко, чем Zapier |
| Google Apps Script | Бесплатно | Если используете Google Sheets |
| Power Automate | $15/пользователь/мес | Для пользователей Microsoft |
| Integromat | $10–300/мес | Альтернатива Zapier |
Пример полного Pipeline
Время выполнения: 15 минут на настройку, потом автоматически каждый день.
-
Настройка сбора данных (5 мин)
- Создаёте Python скрипт, который достаёт данные из Pipedrive API
- Сохраняет в CSV
-
Настройка расчётов (3 мин)
- Скрипт вычисляет метрики через pandas
- Сохраняет в JSON
-
Настройка отчёта (5 мин)
- Скрипт создаёт Word документ
- Вставляет таблицы и текст
-
Настройка отправки (2 мин)
- Скрипт отправляет email
- Копирует в Google Drive
-
Настройка расписания (0 мин)
- Добавляете в cron или Task Scheduler
- Всё работает автоматически
Результат: Каждое утро в 7 утра начальник получает готовый отчёт с данными и анализом.
Цена: $0–50/мес (если использовать бесплатные инструменты).
Что дальше
После автоматизации ежедневных отчётов можно добавить:
- Еженедельные аналитические отчёты (с выводами и рекомендациями)
- Прогнозы на следующий период
- Сравнение с конкурентами (если есть данные)
- Интерактивные дашборды в BI системе
Если не хотите писать скрипты, AI Reports может помочь: загрузите Excel с данными по продажам, система автоматически проанализирует данные, выявит тренды и подготовит готовый аналитический отчёт с выводами.
Заключение
Автоматизация отчётов по продажам экономит:
- 10–20 часов в месяц на менеджере
- Улучшает качество (нет ошибок в ручных расчётах)
- Ускоряет решения (начальник видит данные раньше)
Начните с простого: экспорт из CRM → Google Sheets → Email. Потом расширяйте.
Правило: если вы делаете одно и то же каждый день, это нужно автоматизировать.