
최종 업데이트: 2026년 7월 20일
Quire와 다른 앱 간의 양방향 동기화를 구현하려면, 양쪽에서 웹훅을 받아 각 API를 호출해 변경 사항을 반영하는 중간 계층 서버가 필요합니다. 아키텍처는 다음과 같습니다: Quire ↔ 내 앱 ↔ 다른 앱. 구현 단계는 4가지입니다: 웹훅 서버를 세우고, Quire에 등록(프로젝트 팔로워로 추가)하고, 다른 앱에도 등록한 다음, Quire API 문서의 활동 유형을 기준으로 이벤트를 처리합니다. 안전을 위한 규칙도 두 가지 있습니다: 무한 루프를 막기 위해 각 변경의 출처를 태그하고, Quire 업무 아이디와 다른 앱의 항목 아이디 간 매핑을 유지해야 합니다. Google 캘린더 양방향 동기화 앱이 실제 구현 사례입니다.
데이터가 두 앱에 나뉘어 존재하면, 모든 작업을 두 번 해야 하거나 어느 한쪽에서 조용히 동기화가 깨지기 쉽습니다. 양방향 동기화는 Quire와 다른 앱이 웹훅을 통해 자동으로 업데이트를 교환하게 함으로써 이 이중 입력 문제를 없애줍니다. Quire의 Open API는 정확히 이런 패턴을 위해 만들어졌습니다.
연결되지 않은 도구들이 초래하는 비용은 이미 잘 알려져 있습니다. 소셜 이코노미에 대한 맥킨지의 연구에 따르면, 지식 근로자는 실제 업무 대신 내부 정보를 찾는 데 일주일 근무 시간의 약 20%를 씁니다. 신뢰할 수 있는 동기화는 이 부담의 상당 부분을 자동으로 없애줍니다.
Google 캘린더 양방향 동기화 앱은 대표적인 사례입니다. 수동 조정 없이도 Quire 업무와 Google 캘린더 이벤트가 항상 일치된 상태를 유지합니다. 이 글에서는 다른 앱의 API를 대상으로 동일한 패턴을 구축하는 방법을 살펴봅니다.
Google 캘린더 양방향 동기화는 Premium 이상 구독 등급을 위한 기능입니다. 자세한 내용은 요금제 페이지에서 확인할 수 있습니다.
| 구성 요소 | 역할 |
|---|---|
| Quire 앱 | API 자격 증명 제공; 웹훅을 위해 프로젝트 팔로워로 등록 |
| 중간 계층 서버(내 앱) | 양쪽에서 웹훅 수신; 각 API를 호출해 변경 사항 반영 |
| 다른 앱(예: Google 캘린더) | 해당 쪽 이벤트의 출처; API 쓰기 작업의 대상 |
| Quire 앱 설정 내 웹훅 URL | Quire가 활동 이벤트를 전송하는 위치 |
| ID 매핑 테이블 | Quire 업무 아이디 ↔ 다른 앱의 항목 아이디 매핑 |
| 각 변경에 대한 출처 태그 | 무한 업데이트 루프 방지 |
양방향 동기화는 두 앱 사이의 대화라고 생각하면 됩니다. Quire에서 업무를 업데이트하면 그 변경 사항이 다른 앱에 전달됩니다. 그리고 그 다른 앱에서 무언가가 업데이트되면 그 내용이 Quire에 전달됩니다. 이렇게 해서 어디서든 정보가 일관되게 유지됩니다.

가장 먼저 할 일은 Quire 앱을 설정하는 것입니다. API를 통해 Quire 프로젝트에 접근하기 위한 자격 증명을 얻으려면 앱을 하나 만들어야 합니다.
Quire API로 자신만의 앱을 만드는 단계별 가이드는 블로그 글을 참고하세요.
양방향 동기화를 구현하려면 Quire와 대상 앱(예: Google 캘린더) 사이의 다리 역할을 하는 중간 계층 앱(내 앱)을 개발해야 합니다. 이 앱은 번역가와 같습니다. 한쪽에서 정보를 받아 처리한 뒤, 다른 쪽으로 알맞은 명령을 보냅니다. 흐름은 다음과 같습니다: Quire ↔ 내 앱 ↔ 다른 앱.
양방향 동기화를 활성화하려면, 먼저 중간 계층 역할을 할 자체 서버 앱을 준비해야 합니다. 이 앱은 Quire와 다른 앱 양쪽에서 웹훅 POST 요청을 받는 역할을 맡습니다. 서버는 다음을 할 수 있어야 합니다.
이 서버 앱은 Node.js, Python, Ruby 등 원하는 어떤 기술로도 구축할 수 있습니다. 다음 섹션에서는 Node.js를 사용해 웹훅 이벤트를 받아 처리하는 간단한 예제를 보여드립니다. Quire와 다른 앱이 웹훅 이벤트를 보낼 수 있도록 서버가 인터넷에서 접근 가능한지 확인하세요.
Express를 사용한 간단한 Node.js 예제입니다.
const express = require('express');
const app = express();
app.use(express.json());
app.listen(3000, () => {
console.log('Server is running on port 3000');
});다음으로, Quire에서 웹훅 이벤트를 받을 라우트를 서버에 만들어야 합니다.
app.post('/webhook', (req, res) => {
console.log('Received webhook event:', req.body);
// TODO: Handle the event and update Quire or other app via API
res.status(200).send('Event received');
});이 예제에서 웹훅 라우트는 /webhook이므로, 전체 URL은 ${your-host}/webhook이 됩니다.
이 웹훅 URL을 복사해 Quire 앱 설정에 붙여넣으면, Quire가 내 앱으로 이벤트 알림을 어디로 보낼지 알게 됩니다.

추가로, 동기화하려는 프로젝트에 Quire 앱을 팔로워로 등록해야 합니다. 이렇게 하면 내 앱이 관련 업데이트에 대한 알림을 받을 수 있습니다.
Quire API를 통해 알림을 받는 단계별 가이드는 가이드를 참고하세요.
다른 앱의 업데이트를 Quire와 동기화하려면, 그 앱에서 웹훅 이벤트를 받을 라우트도 서버에 만들어야 합니다. 등록 과정은 위에서 본 Quire 예제와 비슷합니다. 다른 앱이 이벤트 알림을 내 중간 앱의 웹훅 엔드포인트로 보내도록 설정하고, 서버가 이 들어오는 이벤트를 적절히 처리할 수 있도록 하면 됩니다.
내 앱이 Quire와 다른 앱 양쪽에서 웹훅 이벤트를 받게 되면, 이 이벤트를 처리해 두 플랫폼 간 데이터를 동기화하는 로직을 구현해야 합니다. 여기에는 보통 다음이 포함됩니다.
들어오는 이벤트를 신중하게 처리하고 API로 데이터를 업데이트하면, 내 앱은 양쪽 모두에서 변경 사항이 정확히 반영되도록 보장하며 신뢰할 수 있는 양방향 동기화를 유지합니다.
Node.js와 axios를 사용한 예제입니다.
const axios = require('axios');
app.post('/webhook', (req, res) => {
const { type } = req.body.data;
// Reference of activity types:
// https://github.com/quire-api/quire-api/blob/master/docs/activity_types.md
switch (type) {
case 0: //Quire task created
onQuireTaskCreate();
break;
case 1: //Quire task deleted
onQuireTaskDelete();
break;
}
res.status(200).send('Event received');
});
// Route for handling events from another app to Quire
app.post('/anotherwebhook', async (req, res) => {
const { isCreate, id, name, projectId } = req.body;
if (isCreate) {
// Create a task in the Quire project
await axios.post(`https://quire.io/api/task/${projectId}`, { name });
// Optionally, store the mapping between your app's id and Quire's task id
} else {
// Retrieve the corresponding Quire task id using your mapping logic
const taskOid = getTaskIdByAppEventId(id, projectId);
// Delete the task from the Quire project
await axios.delete(`https://quire.io/api/task/${taskOid}`);
}
res.status(200).send('Event processed successfully');
});이 예제는 다른 앱에서 발생한 생성 및 삭제 이벤트를 Quire와 동기화하는 방법을 보여줍니다. 신뢰할 수 있는 동기화를 위해 적절한 오류 처리를 구현하고 ID 매핑을 유지해야 합니다.
안전을 위한 두 가지 규칙이 첫 구현에서 흔히 발생하는 실패 유형을 막아줍니다.
Open API와 웹훅을 함께 사용하면 Quire와 다른 도구들이 서로 경쟁하는 두 개의 정보 소스가 아니라 하나의 단일 진실 소스가 됩니다. 가장 작은 범위의 동기화(이벤트 유형 하나, 방향 하나)부터 시작해 전체 흐름이 제대로 작동하는지 확인한 뒤 범위를 넓혀가세요.
관련 글: Quire API로 외부 도구 연동하기 — n8n을 예시로 — 커스텀 서버 대신 노코드 자동화 도구로 먼저 시작하고 싶다면 참고할 만한 실전 예제입니다.
양방향으로 업데이트가 흐르는 연결입니다. Quire에서의 변경이 다른 앱으로 전달되고, 그곳에서의 변경도 다시 Quire로 전달됩니다. Google 캘린더 양방향 동기화 앱이 실제 구현 사례입니다.
API 자격 증명을 갖춘 Quire 앱, 웹훅을 받을 수 있도록 인터넷에서 접근 가능한 중간 계층 서버, 그리고 두 API 간 이벤트를 변환하는 로직이 필요합니다. 어떤 백엔드 언어를 사용해도 됩니다.
Quire와 다른 서비스 사이의 번역가 역할을 하며, 웹훅 이벤트를 받아 어떤 API 호출을 할지 결정하고, Quire 업무 아이디와 다른 앱의 항목 아이디 간 매핑을 유지합니다.
각 변경이 어디서 시작되었는지 추적하고, 내 동기화 프로세스가 발생시킨 업데이트는 무시합니다. 이 안전장치가 없으면 모든 업데이트가 두 앱 사이에서 영원히 핑퐁처럼 오가게 됩니다.
Premium 이상입니다. 현재 등급별 제한 사항은 요금제 페이지에서 확인하세요.